您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java如何實現窗體程序顯示日歷表”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java如何實現窗體程序顯示日歷表”吧!
1.簡單實現日歷功能,能查看前月后月的日歷功能。
2.使用JTable 組件顯示日歷。
代碼:
CalendaBean.java
import java.util.Calendar; public class CalendaBean { Test test; String[] day; int year = 2017, month = 7; public void setYear(int year) { this.year = year; } public void setMonth(int month) { this.month = month; } public int Last() { month--; if (month == 0) { month = 12; year--; } return month; } public int Next() { month++; if (month == 13) { month = 1; year++; } return month; } public String[] getCalendar() { String[] a = new String[42]; Calendar rili = Calendar.getInstance(); rili.set(year, month - 1, 1); int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 1; int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; } if (month == 4 || month == 6 || month == 9 || month == 11) { day = 30; } if (month == 2) { if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) day = 29; else day = 28; } for (int i = 0; i < weekDay; i++) a[i] = " "; for (int i = weekDay, n = 1; i < weekDay + day; i++) { a[i] = String.valueOf(n); n++; } for (int i = weekDay + day; i < a.length; i++) a[i] = " "; return a; } }
Change.java
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JLabel; public class Change implements ActionListener { CalendaBean c; JLabel now; Test test; public void actionPerformed(ActionEvent e) { String str = e.getActionCommand(); if (str.equals("lastmonth")) { c.Last(); } else if (str.equals("nextmonth")) { c.Next(); } test.Rili(); now.setText("日歷 :" + c.year + "年" + c.month + "月"); } }
Test.java
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class Test extends JFrame { JButton bx, by; CalendaBean cb = new CalendaBean(); Change change = new Change(); DefaultTableModel model; String[] label; JLabel now; JTable table = new JTable(); JScrollPane pane = new JScrollPane(); Object[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; Object[][] rowData = { { null, null, null, null, null, null, null }, { null, null, null, null, null, null, null }, { null, null, null, null, null, null, null }, { null, null, null, null, null, null, null }, { null, null, null, null, null, null, null }, { null, null, null, null, null, null, null }, }; public static void main(String[] args) { Test frame = new Test(); frame.setSize(500, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("日歷"); frame.setVisible(true); } public Test() { change.test = this; int year, month; setLayout(new BorderLayout()); JPanel pNorth = new JPanel(); cb = new CalendaBean(); change.c = cb; bx = new JButton("上月"); by = new JButton("下月"); bx.setActionCommand("lastmonth"); by.setActionCommand("nextmonth"); bx.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { change.actionPerformed(e); } }); by.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { change.actionPerformed(e); } }); pNorth.add(bx); pNorth.add(by); Rili(); model = new DefaultTableModel(rowData, columnNames); table = new JTable(model); table.setRowHeight(38); table.getTableHeader().setResizingAllowed(false); pane = new JScrollPane(table); JPanel pSouth = new JPanel(); now = new JLabel(); now.setText("日歷:" + cb.year + "年" + cb.month + "月"); change.now = now; pSouth.add(now); add(pNorth, BorderLayout.NORTH); add(pane, BorderLayout.CENTER); add(pSouth, BorderLayout.SOUTH); } public void Rili() { String[] a = cb.getCalendar(); int x = 0; if (model != null) { model.setRowCount(0); } for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { rowData[i][j] = a[x]; x++; } if (model != null) model.addRow(rowData[i]); } } }
運行結果
感謝各位的閱讀,以上就是“Java如何實現窗體程序顯示日歷表”的內容了,經過本文的學習后,相信大家對Java如何實現窗體程序顯示日歷表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。