您的位置:首页 > 编程语言 > Java开发

自己用java写的一个swing版的万年历

2015-07-19 19:08 351 查看
/**

以下的代码是我自己用java写的一个简单的万年历。学java也有一段时间了,我觉得是该写点什么东西了。

不仅仅是希望需要的人能够看到借鉴,也希望自己能够在以后能够回忆自己还是个java小菜鸟的时候,为之

奋斗努力的过程。

另外,代码肯定还是有很多不足之处的,希望大神们看到的时候能够稍作指点~

*/

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.Container;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

import java.util.LinkedList;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

public class Test12Swing extends JFrame {
static String str;
static LinkedList link = new LinkedList();
private JButton left;
private JLabel title;
private JLabel[] date = new JLabel[49];
static Calendar calendar = Calendar.getInstance();
private JButton right;
{
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
Test12Swing.kalendar(calendar);

}

public Test12Swing() {
init();
listener();
}

private void listener() {
left.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
leftChange(calendar);
}

});
right.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
rightChange(calendar);
}

});
}

private void rightChange(Calendar calendar) {
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1);
Test12Swing.kalendar(calendar);
title.setText(str);
for (int i = 0; i < 49; i++) {
date[i].setText(" ");
}
for (int i = 0; i < link.size(); i++) {
date[i].setText((String) link.get(i));
}

}

private void leftChange(Calendar calendar) {
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
Test12Swing.kalendar(calendar);
title.setText(str);
for (int i = 0; i < 49; i++) {
date[i].setText("");
}
for (int i = 0; i < link.size(); i++) {
date[i].setText((String) link.get(i));
}

}

private void init() {
this.setTitle("日历");
// 设置界面大小
this.setSize(800, 600);
// 居中
this.setLocationRelativeTo(null);
// 设置面板中的组件
this.setContentPane(createContentPane());
}

private Container createContentPane() {
// 新建面板
JPanel panel = new JPanel();
// 设置此容器的布局管理器(流水,网格,边框),此处为边框
panel.setLayout(new BorderLayout());
panel.add(createNorthPane(), BorderLayout.NORTH);
panel.add(createCenterPane(), BorderLayout.CENTER);
// 设置边框间距,逆时针
// panel.setBorder(new EmptyBorder(10, 10, 10, 10));
return panel;
}

private Component createNorthPane() {
// 新建面板
JPanel panel = new JPanel();
left = new JButton("<");
right = new JButton(">");
title = new JLabel(str, JLabel.CENTER);
// 设置此容器的布局管理器(流水,网格,边框),此处为边框
panel.setLayout(new BorderLayout());
panel.add(left, BorderLayout.WEST);
panel.add(title, BorderLayout.CENTER);
panel.add(right, BorderLayout.EAST);
// 设置边框间距,逆时针
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
return panel;
}

private Component createCenterPane() {
JPanel panel = new JPanel();
// GridLayout() 网格布局
panel.setLayout(new GridLayout(7, 7));
for (int i = 0; i < 49; i++) {
date[i] = new JLabel("", JLabel.CENTER);
}
for (int i = 0; i < link.size(); i++) {
date[i].setText((String) link.get(i));
panel.add(date[i]);
}
for (int i = link.size(); i < 49; i++) {
panel.add(date[i]);
}
return panel;
}

private static void kalendar(Calendar calendar) {
link.clear();
String[] month = { "01", "02", "03", "04", "05", "06", "07", "08",
"09", "10", "11", "12" };
str = "* * * * * * * * * *  " + calendar.get(Calendar.YEAR) + "年"
+ month[calendar.get(Calendar.MONTH)]
+ "月  * * * * * * * * * *";
link.add("日");
link.add("一");
link.add("二");
link.add("三");
link.add("四");
link.add("五");
link.add("六");
calendar.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 7; i < 7 - 1 + calendar.get(Calendar.DAY_OF_WEEK); i++) {
link.add(" ");
}
int count = 1;
for (int i = 7 - 1 + calendar.get(Calendar.DAY_OF_WEEK); i < 7 - 1
+ calendar.get(Calendar.DAY_OF_WEEK)
+ calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
if (count < 10) {
link.add("" + count);
} else {
link.add(count + "");
}
count++;

}
}

public static void main(String[] args) {
Test12Swing test = new Test12Swing();
test.setVisible(true);
// 设置默认关闭选项
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java swing 万年历