1、 private JScrollPane sp = new JScrollPane(table); private JButton bLastYear = new JButton(上一年); private JButton bNextYear = new JButton(下一年 private JButton bLastMonth = new JButton(上月 private JButton bNextMonth = new JButton(下月 private JPanel p1 = new JPanel(); / 设立八个中间容器,装入布局控制日期的按钮模块 private JPane
2、l p2 = new JPanel(new GridLayout(3,2);/网格布局 private JPanel p3 = new JPanel(new BorderLayout();/边界布局 private JPanel p4 = new JPanel(new GridLayout(2,1); private JPanel p5 = new JPanel(new BorderLayout(); private JPanel p6 = new JPanel(new GridLayout(2,2); private JPanel p7 = new JPanel(new GridLayout
3、(2,1); private JPanel p8 = new JPanel(new BorderLayout(); private JComboBox timeBox = new JComboBox(TimeZone.getAvailableIDs();/对所有支持时区进行迭代,获取所有的id; private JTextField jtfYear = new JTextField(5);/ jtfYeaar年份显示输入框 private JTextField jtfMonth = new JTextField(2);/ jtfMouth月份显示输入框 private JTextField t
4、imeField=new JTextField();/各城市时间显示框 private static JTextArea jta = new JTextArea(10,5);/农历显示区 private JScrollPane jsp = new JScrollPane(jta); private JLabel l = new JLabel(花江小精灵:亲!你可以直接输入年月查询. private JLabel lt = new JLabel(); private JLabel ld = new JLabel(); private JLabel lu = new JLabel(农历和节气 pr
5、ivate JLabel null1=new JLabel(); private int lastTime; /private String localTime = null; private String s = null; private SimpleDateFormat dateFormat=new SimpleDateFormat(yyyy年MM月dd日 hh时mm分ss秒 public wannianli() super(花江日历 过去仅留追忆,未来刚生憧憬,唯有坚守本心,把握今天 / 框架命名 this.setDefaultCloseOperation(JFrame.EXIT_ON
6、_CLOSE);/ 窗口关闭函数 this.getContentPane().setLayout(new BorderLayout(9, 10); jta.setLineWrap(true);/ 长度大于分配长度时候则换行 jta.setFont(new Font(黑体, Font.BOLD, 16); table.setBackground(Color.white); table.setGridColor(Color.pink);/ 星期之间的网格线是灰色的 table.setColumnSelectionAllowed(true);/ 将table中的列设置为可选择的 table.setS
7、electionBackground(Color.pink);/ 当选定某一天时背景颜色为黑色 table.setSelectionForeground(Color.GREEN); table.setBackground(new Color(184,207, 229);/ 日期显示表格为浅蓝色 table.setFont(new Font(, Font.BOLD, 24);/ 日期数字字体格式 table.setRowHeight(26);/ 表格的高度 table.addMouseListener(this); / 鼠标监听器、 lu.setFont(new Font(, Font.BOLD
8、, 22);/农历标签格氏 jtfYear.addActionListener(this);/ 可输入年份的文本框 / 为各个按钮添加监听函数 bLastYear.addActionListener(this); bNextYear.addActionListener(this); bLastMonth.addActionListener(this); bNextMonth.addActionListener(this); timeBox.addItemListener(new TimeSelectedChangedListener(); / 将按钮添加到Jpane上 p1.add(bLast
9、Year); p1.add(jtfYear);/ 年份输入文本框 p1.add(bNextYear); p1.add(bLastMonth); p1.add(jtfMonth); p1.add(bNextMonth); p3.add(jsp, BorderLayout.SOUTH); p3.add(lu,BorderLayout.CENTER); p3.add(ld, BorderLayout.NORTH); p4.add(lt); p4.add(l); p5.add(p4, BorderLayout.SOUTH); p5.add(sp, BorderLayout.CENTER); p5.ad
10、d(p1, BorderLayout.NORTH); p6.add(timeBox); p6.add(null1); p6.add(timeField); p8.add(p2,BorderLayout.CENTER); p8.add(p7,BorderLayout.SOUTH); this.getContentPane().add(p3, BorderLayout.EAST); this.getContentPane().add(p5, BorderLayout.CENTER); this.getContentPane().add(p6,BorderLayout.SOUTH); this.ge
11、tContentPane().add(p8,BorderLayout.WEST); String strDate = DateFormat.getDateInstance().format(new Date() .split(-/ 获取日期 cld.set(Integer.parseInt(strDate0), Integer.parseInt(strDate1) - 1,0); showCalendar(Integer.parseInt(strDate0), Integer.parseInt(strDate1), cld); jtfMonth.setEditable(false);/ 设置月
12、份文本框为不可编辑 jtfYear.setText(strDate0); jtfMonth.setText(strDate1); this.showTextArea(strDate2); ld.setFont(new Font(新宋体 new Timer(lt).start(); new TimeThread().start(); this.setBounds(200, 200, 700, 350); this.setResizable(false); this.setVisible(true); public void showCalendar(int localYear, int loca
13、lMonth, Calendar cld) int Days = getDaysOfMonth(localYear, localMonth) + cld.get(Calendar.DAY_OF_WEEK) -2; Object ai = new Object7; lastTime = 0; for (int i = cld.get(Calendar.DAY_OF_WEEK)-1; i = Days; i+) aii%7 = String.valueOf(i-(cld.get(Calendar.DAY_OF_WEEK)-2); if (i%7 = 6) dtm.addRow(ai); ai =
14、new Object7; lastTime+; public int getDaysOfMonth(int Year, int Month) /计算各月的天数 if(Month=1|Month=3|Month=5|Month=7|Month=8|Month=10|Month=12) return 31; if(Month=4|Month=6|Month=9|Month=11) return 30; if(Year%4=0&Year%100!=0|Year%400=0)/闰年 return 29; else return 28; public void actionPerformed(Actio
15、nEvent e)/从界面上获取年月数据 if(e.getSource() = jtfYear | e.getSource() = bLastYear | e.getSource() = bNextYear | e.getSource() = bLastMonth | e.getSource() = bNextMonth) int m, y; try/控制输入的年份正确,异常控制 if (jtfYear.getText().length() != 4) throw new NumberFormatException(); y = Integer.parseInt(jtfYear.getText
16、(); m = Integer.parseInt(jtfMonth.getText(); catch (NumberFormatException ex) JOptionPane.showMessageDialog(this, 请输入4位0-9的数字!年份有误, JOptionPane.ERROR_MESSAGE); return; ld.setText(没有选择日期 for (int i = 0; lastTime+1; i+) dtm.removeRow(0); if(e.getSource() = bLastYear) jtfYear.setText(String.valueOf(-y)
17、; if(e.getSource() = bNextYear)jtfYear.setText(String.valueOf(+y); if(e.getSource() = bLastMonth) if(m = 1) jtfYear.setText(String.valueOf(-y); m = 12; jtfMonth.setText(String.valueOf(m); else jtfMonth.setText(String.valueOf(-m); if(e.getSource() = bNextMonth) if(m = 12) jtfYear.setText(String.value
18、Of(+y); m = 1; jtfMonth.setText(String.valueOf(+m); cld.set(y, m-1, 0); showCalendar(y, m, cld); public void mouseClicked(MouseEvent e) jta.setText(null); int r = table.getSelectedRow(); int c = table.getSelectedColumn(); if (table.getValueAt(r,c) = null) this.showTextArea(table.getValueAt(r,c); pri
19、vate void showTextArea(Object selected) ld.setText(jtfYear.getText()+年+jtfMonth.getText()+月+selected+日 public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); new wannianli(); jta.setText(today(); private void updateTimeText(Str
20、ing timeZoneId) if(timeZoneId != null) TimeZone timeZone = TimeZone.getTimeZone(timeZoneId); dateFormat.setTimeZone(timeZone); Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(timeZone); timeField.setText(dateFormat.format(calendar.getTime(); else timeField.setText(null); private cla
21、ss TimeSelectedChangedListener implements ItemListener public void itemStateChanged(ItemEvent e) if (e.getStateChange()=ItemEvent.SELECTED) if (e.getItem() instanceof String) s = e.getItem().toString(); private class TimeThread extends Thread public void run() while(true) updateTimeText(s); try Thre
22、ad.sleep(100); catch(InterruptedException e) e.printStackTrace(); class Timer extends Thread /显示系统时间 private JLabel lt; private SimpleDateFormat fy = new SimpleDateFormat( G yyyy.MM.dd HH:mm:ss public Timer(JLabel lt) this.lt=lt; public void run() while(true) try lt.setText(fy.format(new Date(); thi
23、s.sleep(500); catch(InterruptedException ex) ex.printStackTrace(); final private static long lunarInfo = new long 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x0497
24、0, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0,
25、0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a9
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1