当前位置: 首页>編程日記>正文

Java 实训1:编写一个窗体程序显示日历表。

Java 实训1:编写一个窗体程序显示日历表。

 实训!要求:
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;elseday = 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还有很多不懂的地方,幸好有大神的解答,自己还有很多需要学习的地方。


https://www.fengoutiyan.com/post/14799.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機