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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值