电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java JTable 實現日歷的示例

瀏覽:8日期:2022-08-23 13:26:57

效果圖:

Java JTable 實現日歷的示例

主要思想:日歷最核心的功能就是能顯示某年某月對應的日期和星期幾。因此只要實現傳入具體的年份和月份,得到一組存放了日期的數組a[ ]即可。其中數組的大小設置成42,要考慮的問題是當月的第一天對應星期幾。日期數組中的前七個,肯定包含了當月的第一天,把這一天找到,將“1”填入,后面的日期依次累加直到加完該月最后一天為止。

MyCalendar類:

得到用于顯示日期數組a[ ]

import java.util.Calendar;public class MyCalendar {String day[];int year = 2020,month=0;public String[] getDay() {return day;}public void setDay(String[] day) {this.day = day;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}private boolean isLeapYear() {if(this.year%4==0 && this.year%100!=0){return true;}else if(this.year%400==0){return true;}elsereturn false;}//獲得顯示數組public String[] getCalendar(){Calendar calendar=Calendar.getInstance();String a[]=new String[42];calendar.set(year,month-1,1);int weekday=calendar.get(Calendar.DAY_OF_WEEK)-1;int day=0;int days = 31;if (this.month == 4 || this.month == 6 || this.month == 9 || this.month == 11)days = 30;if (this.month == 2 && isLeapYear())days = 29;if (this.month == 2 && !isLeapYear())days = 28;for(int i = weekday,n=1;i< weekday +days;i++){a[i]=String.valueOf(n);n++;}return a;}}

MyFrame類:

創造顯示面板,主要用到JTable。

public class MyFrame extends JFrame implements ActionListener {//存儲數據MyCalendar calendar = new MyCalendar();JComboBox choiceYear,choiceMonth;JTable table = null;JPanel root = new JPanel();JLabel lyear, lmonth;private Object[] name = {'日','一','二','三','四','五','六'};private TableModel tableModel = new DefaultTableModel(name,6);// private static int row = 6;// private static int column = 7;public MyFrame(String title) {super(title);this.setContentPane(root);root.setLayout(new BorderLayout());//年月選擇欄choiceYear=new JComboBox();choiceMonth=new JComboBox();lyear=new JLabel('年');lmonth=new JLabel('月 ');for(int i=1990;i<2050;i++)choiceYear.addItem(i);choiceYear.addActionListener(this);for(int i=1;i<=12;i++)choiceMonth.addItem(i);choiceMonth.addActionListener(this);JPanel pNorth=new JPanel();pNorth.add(choiceYear);pNorth.add(lyear);pNorth.add(choiceMonth);pNorth.add(lmonth);root.add(pNorth,BorderLayout.NORTH);// 表格初始化setYearAndMonth( 1990, 1);}//設置年月日public void setYearAndMonth(int y,int m){calendar.setYear(y);calendar.setMonth(m);String day[]=calendar.getCalendar();Vector<Object> rowData = new Vector<>();int row = 0;int column = 0;for(int i = 0; i< 42; i++) {row = i / 7;column = i % 7;tableModel.setValueAt(day[i], row, column);}// 創建 JTable,直接重寫 isCellEditable(),設為不可編輯table = new JTable(tableModel){@Overridepublic boolean isCellEditable(int row, int column){return false;} };JScrollPane scrollPane = new JScrollPane(table);root.add(scrollPane, BorderLayout.CENTER);// 添加到主界面 table.setFillsViewportHeight(true); table.setRowSelectionAllowed(true); // 整行選擇table.setRowHeight(30); } public void actionPerformed(ActionEvent e){//選擇年份if (e.getSource()==choiceYear){calendar.setYear((Integer) choiceYear.getSelectedItem());String day[]=calendar.getCalendar();Vector<Object> rowData = new Vector<>();int row = 0;int column = 0;for(int i = 0; i< 42; i++) {row = i / 7;column = i % 7;tableModel.setValueAt(day[i], row, column);}table = new JTable(tableModel){@Overridepublic boolean isCellEditable(int row, int column){return false;} };JScrollPane scrollPane = new JScrollPane(table);root.add(scrollPane, BorderLayout.CENTER);// 添加到主界面 table.setFillsViewportHeight(true); table.setRowSelectionAllowed(true); // 整行選擇table.setRowHeight(30); }//選擇月份else if (e.getSource()==choiceMonth){calendar.setMonth((Integer) choiceMonth.getSelectedItem());String day[]=calendar.getCalendar();Vector<Object> rowData = new Vector<>();int row = 0;int column = 0;for(int i = 0; i< 42; i++) {row = i / 7;column = i % 7;tableModel.setValueAt(day[i], row, column);}}table = new JTable(tableModel){@Overridepublic boolean isCellEditable(int row, int column){return false;} };JScrollPane scrollPane = new JScrollPane(table);root.add(scrollPane, BorderLayout.CENTER);// 添加到主界面 table.setFillsViewportHeight(true); table.setRowSelectionAllowed(true); // 整行選擇table.setRowHeight(30); }}

ShowView類:

用于顯示窗口,照抄即可,無需理解。

import java.awt.Container;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;public class ShowView{ private static void createGUI() {// 語法:因為MyFrame是JFrame的子類,所以可以這么寫 JFrame frame = new MyFrame('日歷'); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設置窗口的其他參數,如窗口大小 frame.setSize(400, 300);// 顯示窗口 frame.setVisible(true); } public static void main(String[] args) { // 此段代碼間接地調用了 createGUI()javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() {createGUI(); } }); }}

以上就是Java JTable 實現日歷的示例的詳細內容,更多關于Java JTable 實現日歷的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 压力变送器-上海武锐自动化设备有限公司| 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 广东成考网-广东成人高考网 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 高压直流电源_特种变压器_变压器铁芯-希恩变压器定制厂家 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 |