java自动创建月份_使用Java根据月份动态绘制BarGraph

您需要通过每次更改来更新数据集.我添加了一个updateDataset()方法,并在几个关键位置调用了它.

private void updateDataset() {

dataset.clear();

for (int i = 1; i <= finalday; i++) {

dataset.setValue(i, "Marks", "" + i);

}

笔记:

>不要使用绝对布局;让布局完成工作.

>不要自己做日期算术;将日历用于example.

>不要在构造函数中调用可重写的方法.

>请重构代码以限制变量的数量和范围.

>请使用有意义的名称,尤其是对于实例变量.

SSCCE,未完全修订:

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ItemEvent;

import java.util.Calendar;

import java.util.GregorianCalendar;

import javax.swing.*;

import javax.swing.event.ChangeEvent;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartFrame;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.BarRenderer;

import org.jfree.data.category.DefaultCategoryDataset;

public class BarGraph {

public int count = 0, count1 = 0, count2 = 0, count3 = 0, count4 = 0;

public int contstatus = 2;

public int date, year, mon, fn, show = 0, finalday, leapcn = 0, task = 0;

String startdte, enddte, monthweek, leavedates = "", nneed = "", year4enab, month4enab, days;

ChartFrame frame;

public static int st = 0;

JButton left = new JButton("

JButton right = new JButton(">");

JComboBox month = new JComboBox();

JSpinner yearspin = new javax.swing.JSpinner();

JLabel monthLabel = new javax.swing.JLabel();

JLabel yearLabel = new javax.swing.JLabel();

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

BarGraph() {

task = 1;

Calendar cal;

left.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

left.setRequestFocusEnabled(false);

left.addActionListener(new java.awt.event.ActionListener() {

@Override

public void actionPerformed(java.awt.event.ActionEvent evt) {

leftActionPerformed(evt);

}

});

right.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

right.setRequestFocusEnabled(false);

right.addActionListener(new java.awt.event.ActionListener() {

@Override

public void actionPerformed(java.awt.event.ActionEvent evt) {

rightActionPerformed(evt);

}

});

month.setMaximumRowCount(12);

month.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}));

month.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

month.addItemListener(new java.awt.event.ItemListener() {

@Override

public void itemStateChanged(java.awt.event.ItemEvent evt) {

monthItemStateChanged(evt);

}

});

yearspin.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

yearspin.setValue(year);

yearspin.addChangeListener(new javax.swing.event.ChangeListener() {

@Override

public void stateChanged(javax.swing.event.ChangeEvent evt) {

yearspinStateChanged(evt);

}

});

monthLabel.setBackground(new java.awt.Color(255, 255, 255));

monthLabel.setFont(new java.awt.Font("Tahoma", 1, 13)); // NOI18N

monthLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

monthLabel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, null, java.awt.Color.black, null, null));

monthLabel.setOpaque(true);

monthLabel.setText("SEPTEMBER");

yearLabel.setBackground(new java.awt.Color(255, 255, 255));

yearLabel.setFont(new java.awt.Font("Tahoma", 1, 13)); // NOI18N

yearLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

yearLabel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, null, java.awt.Color.black, null, null));

yearLabel.setOpaque(true);

yearLabel.setText("2013");

cal = new GregorianCalendar();

year = cal.get(Calendar.YEAR);

mon = cal.get(Calendar.MONTH);

date = cal.get(Calendar.DATE);

yearspin.setValue(year);

month.setSelectedIndex(mon);

calendar(year, mon);

month4enab = getMonth(monthLabel.getText());

year4enab = yearLabel.getText();

startdte = year4enab + "-" + month4enab + "-01";

enddte = year4enab + "-" + month4enab + "-" + finalday;

}

public static void main(String[] args) {

new BarGraph().showBar();

}

private void leftActionPerformed(ActionEvent evt) {

show = 0;

if (mon == 0) {

year--;

mon = 11;

} else {

mon--;

}

yearspin.setValue(year);

month.setSelectedIndex(mon);

display();

calendar(year, mon);

displayCalendar();

updateDataset();

}

private void rightActionPerformed(ActionEvent evt) {

show = 0;

if (mon == 11) {

year++;

mon = 0;

} else {

mon++;

}

yearspin.setValue(year);

month.setSelectedIndex(mon);

display();

calendar(year, mon);

displayCalendar();

updateDataset();

}

private void displayCalendar() {

month4enab = getMonth(monthLabel.getText());

year4enab = yearLabel.getText();

startdte = year4enab + "-" + month4enab + "-01";

enddte = year4enab + "-" + month4enab + "-" + finalday;

}

private void monthItemStateChanged(ItemEvent evt) {

show = 0;

String s = (String) month.getSelectedItem();

if ("January".equals(s)) {

mon = 0;

}

if ("February".equals(s)) {

mon = 1;

}

if ("March".equals(s)) {

mon = 2;

}

if ("April".equals(s)) {

mon = 3;

}

if ("May".equals(s)) {

mon = 4;

}

if ("June".equals(s)) {

mon = 5;

}

if ("July".equals(s)) {

mon = 6;

}

if ("August".equals(s)) {

mon = 7;

}

if ("September".equals(s)) {

mon = 8;

}

if ("October".equals(s)) {

mon = 9;

}

if ("November".equals(s)) {

mon = 10;

}

if ("December".equals(s)) {

mon = 11;

}

display();

calendar(year, mon);

updateDataset();

}

private void yearspinStateChanged(ChangeEvent evt) {

show = 0;

year = (Integer) yearspin.getValue();

display();

calendar(year, mon);

updateDataset();

}

public void display() {

String month = "", day = "";

if (mon < 9) {

month = "0" + (mon + 1);

} else {

month = "" + (mon + 1);

}

if (nneed.length() < 2) {

day = "0" + nneed;

} else {

day = "" + nneed;

}

String datss = year + "-" + (month) + "-" + day;

switch (mon) {

case 0:

monthLabel.setText("JANUARY");

break;

case 1:

monthLabel.setText("FEBRUARY");

break;

case 2:

monthLabel.setText("MARCH");

break;

case 3:

monthLabel.setText("APRIL");

break;

case 4:

monthLabel.setText("MAY");

break;

case 5:

monthLabel.setText("JUNE");

break;

case 6:

monthLabel.setText("JULY");

break;

case 7:

monthLabel.setText("AUGUST");

break;

case 8:

monthLabel.setText("SEPTEMBER");

break;

case 9:

monthLabel.setText("OCTOBER");

break;

case 10:

monthLabel.setText("NOVEMBER");

break;

case 11:

monthLabel.setText("DECEMBER");

break;

}

yearLabel.setText(String.valueOf(year));

}

public void calendar(int year, int mon) {

int year1 = year;

int count1 = 1, fun = 0, day, day1 = 0, key = 0, k = -1, s = 1, ck = 2, cheak, y = 0;

day1 = year % 100;

fun = 1 + (day1 / 4);

switch (mon) {

case 0:

key = 1;

k = -1;

break;

case 1:

key = 4;

k = 0;

break;

case 2:

key = 4;

k = 0;

break;

case 3:

key = 0;

k = 0;

break;

case 4:

key = 2;

k = 0;

break;

case 5:

key = 5;

k = 0;

break;

case 6:

key = 0;

k = 0;

break;

case 7:

key = 3;

k = 0;

break;

case 8:

key = 6;

k = 0;

break;

case 9:

key = 1;

k = 0;

break;

case 10:

key = 4;

k = 0;

break;

case 11:

key = 6;

k = 0;

break;

}

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

k = -1;

day = 29;

leapcn = 0;

if (mon == 0 || mon == 1) {

leapcn = 1;

}

} else {

k = 0;

day = 28;

leapcn = 1;

}

if (year >= 2000) {

y = 6;

}

if (year <= 1900 && year > 2000) {

y = 0;

}

fun = fun + key + k + y;

fun = (fun + day1) % 7;

if (fun == 0) {

fun = 7;

}

if (mon == 0 || mon == 2 || mon == 4 || mon == 6 || mon == 7 || mon == 9 || mon == 11) {

day = 31;

}

if (mon == 3 || mon == 5 || mon == 8 || mon == 10) {

day = 30;

}

finalday = day;

System.out.println("DAYS IN THIS MONTHS:" + finalday);

cheak = fun + 1;

s++;

}

public static String getMonth(String s) {

String mont = "56";

if ("January".equalsIgnoreCase(s)) {

mont = "01";

} else if ("February".equalsIgnoreCase(s)) {

mont = "02";

} else if ("March".equalsIgnoreCase(s)) {

mont = "03";

} else if ("April".equalsIgnoreCase(s)) {

mont = "04";

} else if ("May".equalsIgnoreCase(s)) {

mont = "05";

} else if ("June".equalsIgnoreCase(s)) {

mont = "06";

} else if ("July".equalsIgnoreCase(s)) {

mont = "07";

} else if ("August".equalsIgnoreCase(s)) {

mont = "08";

} else if ("September".equalsIgnoreCase(s)) {

mont = "09";

} else if ("October".equalsIgnoreCase(s)) {

mont = "10";

} else if ("November".equalsIgnoreCase(s)) {

mont = "11";

} else if ("December".equalsIgnoreCase(s)) {

mont = "12";

}

return mont;

}

private void showBar() {

for (int i = 1; i <= finalday; i++) {

dataset.setValue(i, "Marks", "" + i);

}

JFreeChart chart = ChartFactory.createBarChart(" ", "Student", "Marks",

dataset, PlotOrientation.VERTICAL, false, true, false);

chart.setBackgroundPaint(Color.WHITE);

CategoryPlot plot = (CategoryPlot) chart.getPlot();

plot.setBackgroundPaint(new Color(221, 223, 238));

plot.setRangeGridlinePaint(Color.white);

BarRenderer renderer = (BarRenderer) plot.getRenderer();

renderer.setSeriesPaint(0, new Color(231, 175, 61));

renderer.setSeriesPaint(1, Color.green);

renderer.setDrawBarOutline(false);

renderer.setShadowVisible(false);

chart.setBackgroundPaint(Color.WHITE);

chart.getTitle().setPaint(Color.blue);

CategoryPlot p = chart.getCategoryPlot();

p.setRangeGridlinePaint(Color.BLUE);

frame = new ChartFrame("Bar Chart", chart);

frame.add(month);

frame.add(left);

frame.add(right);

frame.add(yearspin);

frame.add(monthLabel);

frame.add(yearLabel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

private void updateDataset() {

dataset.clear();

for (int i = 1; i <= finalday; i++) {

dataset.setValue(i, "Marks", "" + i);

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 5.6.23 源码包安装报错_Ubuntu 14.10下编译安装MySQL 5.6.23

1. 安装环境&#xff1a;Ubuntu Server 14.10MySQL-5.6.23.tar.gz2. 安装必备的工具sudo apt-get install make bison g build-essential libncurses5-dev cmake3. 添加组合用户 设置安装目录权限sudo groupadd mysqlsudo useradd –g mysql mysql –s /bin/false #创建用户mys…

java 阻塞 性能_聊聊并发-Java中的阻塞队列

1. 什么是阻塞队列&#xff1f;阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是&#xff1a;在队列为空时&#xff0c;获取元素的线程会等待队列变为非空。当队列满时&#xff0c;存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景…

java编译器对代码的优化_使用最终局部变量的Java编译器优化

我一直认为final关键字对局部方法变量或参数没有影响。因此,我尝试测试以下代码,但似乎我错了:private static String doStuffFinal() {final String a "A";final String b "B";final int n 2;return a b n;}private static String doStuffNotFinal()…

友盟统计java代码_SFAnalytics 分析友盟统计源码,反编译 SDK,还有部分没有 出来 android 259万源代码下载- www.pudn.com...

文件名称: SFAnalytics下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 8023 KB上传时间: 2016-06-05下载次数: 0提 供 者: 花心大萝卜详细说明&#xff1a;分析友盟统计源码&#xff0c;反编译友盟统计SDK&#xff0c;还有部分没有反编译出来-Analysis their Allies s…

Java导入sql失败_java – 在hibernate中导入import.sql失败

我希望每次应用程序运行时自动删除表并创建一个新表,并自动插入预定义数据.我已经在import.sql中准备数据了.我已经在application.properties中设置了spring.jpa.hibernate.ddl-auto create-drop.但是,为什么我会收到以下错误&#xff1f;我可以手动插入它.2015-11-20 20:53:5…

java mvc数据库 封装_关于SpringMvc参数封装_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

SpringMVCSpring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色&#xff0c;这种分离让它们更容易进行定制。SpringSpring是一个开源框架&#xff0c;Spring是于2003 年兴起的…

Java语言有哪几种访问权限_java基础之java四种访问权限详解

引言Java中的访问权限理解起来不难&#xff0c;但完全掌握却不容易&#xff0c;特别是4种访问权限并不是任何时候都可以使用。下面整理一下&#xff0c;在什么情况下&#xff0c;有哪些访问权限可以允许选择。一、访问权限简介访问权限控制&#xff1a; 指的是本类及本类内部的…

centos 使用java_如何在CentOS 8上安装Java

Java是用于构建不同类型的应用程序和系统的最流行的编程语言之一。Java有两种不同的实现&#xff0c;OpenJDK和Oracle Java&#xff0c;两者之间几乎没有区别&#xff0c;只是Oracle Java具有一些其他的商业功能。 Oracle Java License仅允许该软件的非商业使用&#xff0c;例如…

kafka java客户端加密_kafka消息加密(SASL/PLAIN)

kafka消息加密(SASL/PLAIN)具体的配置方式官网已经说的很清楚了(尽量去官网看)官网配置分为以下几个步骤1、 在conf文件目录下添加文件kafka_server_jaas.conf(文件目录 文件名随意)内容如下KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requireduse…

oracle查询本月第一天_oracle获取本月第一天和最后一天及Oracle trunc()函数的用法...

select to_char(trunc(add_months(last_day(sysdate), -1) 1), yyyy-mm-dd) "本月第一天", to_char(last_day(sysdate), yyyy-mm-dd) "本月最后一天" --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) …

20199计算机二级java答案_计算机二级Java练习题-2019.9

是不是急于做大量的计算机等级考试题库&#xff0c;却因测试结果不尽人意而心慌不安&#xff1f;不要急&#xff01;考无忧小编为大家准备了一些二级Java练习题&#xff0c;希望能帮助大家高效复习&#xff0c;轻松通关&#xff01;1.下列叙述中正确的是()。A.栈是“先进先出”…

java处理请求的流程_Java Spring mvc请求处理流程详解

Spring mvc请求处理流程详解前言spring mvc框架相信很多人都很熟悉了&#xff0c;关于这方面的资料也是一搜一大把。但是感觉讲的都不是很细致&#xff0c;让很多初学者都云里雾里的。本人也是这样&#xff0c;之前研究过&#xff0c;但是后面一段时间不用发现又忘记了。所以决…

php之二叉树,数据结构之二叉树——链式存储结构(php代码实现)

/*** ClearBiTree() 清空二叉树* CreateBiTree() 创建二叉树* BiTreeEmpty() 判断二叉树是否为空* BiTreeDepth() 返回二叉树的深度* root() 返回二叉树的根* Parent() 返回给定元素的双亲* LeftChild() 要返回左孩子的元素* RightChild() 要返回右孩子的元素* LeftSibling() 要…

php 面向对象 特性,PHP面向对象三大特点学习

PHP面向对象三大特点学习class B extends A{public function __construct(){//两种方法都行A::test();parent::test();}}$bnew B();5、如果一个子类(派生类)的方法与父类的方法完全一样时(public&#xff0c;protected)&#xff0c;我们称为方法覆盖或方法重写(override)&#…

云虚机php.ini在,虚拟主机php.ini在哪

虚拟主机php.ini在哪&#xff1f;虚拟主机php.ini文件一般放置在文件管理器的“others”文件夹中。php.ini文件控制了PHP很多方面的性能和行为&#xff0c;且必须命名为“php.ini”。PHP.ini文件部分配置指令简短说明&#xff1a;short_open_tag boolean决定是否允许使用 PHP 代…

robust off matlab,matlab_robust LM test 求指点!(空间计量)

空间计量软件包中的示例命令&#xff1a;trtrace((WW)*W);[N junk]size(W);[nobs k]size(x);Tnobs/N;betaresults.beta;resresults.resid;sigeres*res/nobs;WXB20;EWE0;EWY0;xpxix*x\eye(k);WXBkron(speye(T),W)*x*beta;MWXB(speye(N*T)-x*xpxi*x)*WXB;WXB2WXB*MWXB;for t1:Tt1…

2019matlab中的floyd,基于matlab的floyd算法详解

function [d,path]floyd(a,sp,ep)% floyd - 最短路问题%% Syntax: [d,path]floyd(a,sp,ep)%% Inputs:% a - 距离矩阵是指i到j之间的距离&#xff0c;可以是有向的% sp - 起点的标号% ep - 终点的标号%% Outputs:% d - 最短路的距离% path - 最短路的…

.1 matlab,1 MATLAB集成环境

启动MATLAB后&#xff0c;将进入MATLAB集成环境。MATLAB集成环境包括MATLAB主窗口、命令窗口(Command Window)、工作空间窗口(Workspace)、命令历史窗口(Command History)、当前目录窗口(Current Directory)和启动平台窗口(Launch Pad)。一、命令窗口命令窗口是MATLAB的主要交互…

matlab 读取mov文件格式,VideoReader 支持的文件格式 - MATLAB VideoReader.getFileFormats - MathWorks 中国...

获取受支持的文件格式。formats VideoReader.getFileFormats()Video File Formats:.asf - ASF File.asx - ASX File.avi - AVI File.m4v - MPEG-4 Video.mj2 - Motion JPEG2000.mov - QuickTime movie.mp4 - MPEG-4.mpg - MPEG-1.wmv - Windows Media Video此输出适用于 Windo…

java parseint(12.0),如何实现一个parseInt

如何实现一个parseIntfunction(string, [radix]) {}如果string不为字符串类型, 则先将string转化为字符串类型string会忽略前后的空白依次解析字符, 如果字符不是指定基数中的字符( 例如:2进制中的3、 10进制中的f )则停止解析( 首字符为或-时除外 ), 返回已经解析好的整数如果…