50,530
社区成员
发帖
与我相关
我的任务
分享
//软件的平面布局和事件监听
package newclender;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CanlenderGUI extends javax.swing.JPanel
{
int year;
int month;
Font font = new Font("微软雅黑",Font.PLAIN,15);
public CanlenderGUI()
{
initComponents();
selectMonth.setFont(font);
selectMonth.addItem("一月");
selectMonth.addItem("二月");
selectMonth.addItem("三月");
selectMonth.addItem("四月");
selectMonth.addItem("五月");
selectMonth.addItem("六月");
selectMonth.addItem("七月");
selectMonth.addItem("八月");
selectMonth.addItem("九月");
selectMonth.addItem("十月");
selectMonth.addItem("十一月");
selectMonth.addItem("十二月");
}
@SuppressWarnings("unchecked")
private void initComponents()
{
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
mainPrint = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
InputYear = new javax.swing.JTextPane();
jbtOK = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
selectMonth = new javax.swing.JComboBox();
jbtMessage = new javax.swing.JButton();
setBackground(new java.awt.Color(246, 250, 240));
setFont(new java.awt.Font("微软雅黑", 0, 12));
jLabel1.setBackground(new java.awt.Color(204, 204, 204));
jLabel1.setFont(new java.awt.Font("微软雅黑", 0, 20));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("欢迎使用电子日历!");
mainPrint.setBackground(new java.awt.Color(255, 255, 255));
mainPrint.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
mainPrint.setToolTipText("输入年份并选择月份后查看日历!");
mainPrint.setFont(new java.awt.Font("微软雅黑", 0, 12));
javax.swing.GroupLayout mainPrintLayout = new javax.swing.GroupLayout(mainPrint);
mainPrint.setLayout(mainPrintLayout);
mainPrintLayout.setHorizontalGroup(
mainPrintLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
mainPrintLayout.setVerticalGroup(
mainPrintLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jScrollPane1.setViewportView(InputYear);
jbtOK.setFont(new java.awt.Font("微软雅黑", 0, 15));
jbtOK.setText("确定");
jbtOK.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jbtOKActionPerformed(evt);
}
});
jLabel2.setFont(new java.awt.Font("微软雅黑", 0, 15));
jLabel2.setText("输入年份:");
selectMonth.setToolTipText("选择月份");
selectMonth.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(java.awt.event.ItemEvent evt)
{
selectMonthItemStateChanged(evt);
}
});
jbtMessage.setFont(new java.awt.Font("微软雅黑", 0, 11));
jbtMessage.setText("开发信息");
jbtMessage.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jbtMessageActionPerformed(evt);
}
});
........//因为CSDN要求文章字数10000字以内,所以控件布局信息略去,需要完整代码的请密我。
}
private void jbtOKActionPerformed(java.awt.event.ActionEvent evt)
{
mainPrint.removeAll();
try
{
year=Integer.parseInt(InputYear.getText());
}
catch(NumberFormatException g)
{
JOptionPane.showMessageDialog(null,"请输入正确的年份!");
year=Integer.parseInt(InputYear.getText());
}
if(year>0)
{
mainPrint.setLayout(new GridLayout(0,7));
JLabel label;
label=new JLabel("星期天");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期一");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期二");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期三");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期四");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期五");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期六");
label.setFont(font);
mainPrint.add(label);
printDays days=new printDays(year,month);
for(int i=0;i<days.count;i++)
{
if(days.s[i]==-1)
mainPrint.add(new JLabel(""));
else
{
label=new JLabel(" "+days.s[i]);
label.setFont(font);
mainPrint.add(label);
}
}
}
else
JOptionPane.showMessageDialog(null,"请输入正确的年份!");
mainPrint.updateUI();
}
private void selectMonthItemStateChanged(java.awt.event.ItemEvent evt)
{
mainPrint.removeAll();
month=selectMonth.getSelectedIndex()+1;
mainPrint.setLayout(new GridLayout(0,7));
if(year>0)
{
mainPrint.setLayout(new GridLayout(0,7));
JLabel label;
label=new JLabel("星期天");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期一");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期二");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期三");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期四");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期五");
label.setFont(font);
mainPrint.add(label);
label=new JLabel("星期六");
label.setFont(font);
mainPrint.add(label);
printDays days=new printDays(year,month);
for(int i=0;i<days.count;i++)
{
if(days.s[i]==-1)
mainPrint.add(new JLabel(""));
else
{
label=new JLabel(" "+days.s[i]);
label.setFont(font);
mainPrint.add(label);
}
}
mainPrint.updateUI();
}
}
private void jbtMessageActionPerformed(java.awt.event.ActionEvent evt)
{
String message="版本:1.3\n开发工具:NetBeans IDE 7.4\n开发者:徐建杰\n日期:2014年1月24日";
JOptionPane.showMessageDialog(null,message);
}
private javax.swing.JTextPane InputYear;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton jbtMessage;
private javax.swing.JButton jbtOK;
private javax.swing.JPanel mainPrint;
private javax.swing.JComboBox selectMonth;
}
//处理数据的核心代码
package newclender;
public class printDays
{
private int year;
private int month;
private int OneMonthDays;//这个月有几天
private int first;//这个月的第一天是星期几
public int[] s;
public int count=0;
printDays(int year,int month)
{
this.month=month;
this.year=year;
s=new int[38];
OneMonthDays=days(month);
first=firstDay();
int i;
for(i=0;i<first;i++)
{
s[i]=-1;
count++;
}
for(int j=1;j<=OneMonthDays;i++,j++)
{
s[i]=j;
count++;
}
}
public int firstDay()
{
//1800年1月1日星期三
int sumOfDays=sumOfYearDays()+sumOfMonthDays();//1800年1月1日到输入的日期总共有几天
return((sumOfDays+3)%7);
}
private int sumOfYearDays()
{
int total=0;
for(int i=1800;i<year;i++)
{
if(isLeapYear(i))
total=total+366;
else
total=total+365;
}
return total;
}
public int sumOfMonthDays()
{
int total=0;
for(int i=1;i<month;i++)
total=total+days(i);
return total;
}
public int days(int Month)
{
if(Month==1||Month==3||Month==5||Month==7||Month==8||Month==10||Month==12)
return 31;
else if(Month==2)
return february(year);
else
return 30;
}
public int february(int Year)
{
if(isLeapYear(Year))
return 29;
else
return 28;
}
public boolean isLeapYear(int Year)
{
if(Year%4==0&&Year%100!=0||Year%400==0)
return true;
else
return false;
}
}
//测试主函数
package newclender;
import javax.swing.*;
public class NewCanlender
{
public static void main(String[] args)
{
CanlenderGUI calender=new CanlenderGUI();
JFrame frame = new JFrame("电子日历");
frame.add(calender);
frame.setSize(600, 380);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}