一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java JTable 實現日歷的示例

Java JTable 實現日歷的示例

2020-10-05 12:16淺棘 Java教程

這篇文章主要介紹了Java JTable 實現日歷的示例,幫助大家更好的理解和學習Java jtable的使用方法,感興趣的朋友可以了解下

效果圖:

Java JTable 實現日歷的示例

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

MyCalendar類:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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;
}else
 
return 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。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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){
@Override
public 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){
@Override
public 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){
@Override
public 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類:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 實現日歷的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/qianji-7/p/13759500.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美国产精品完整版 | 色姑娘导航| 日本国产最新一区二区三区 | 小小水蜜桃视频高清在线播放 | 911精品国产亚洲日本美国韩国 | 亚洲一级片在线播放 | 黄a在线观看 | 女张腿男人桶羞羞漫画 | 爆操俄罗斯美女 | 亚洲热在线视频 | 亚洲国产成人精品无码区APP | 999国产高清在线精品 | 日韩网站在线观看 | 日本黄大片影院一区二区 | 性派对videofreeparty | 欧美三级小说 | 国产精品免费视频能看 | 欧美草逼网 | 狠狠色伊人亚洲综合网站色 | 四虎国产精品免费久久麻豆 | 国产网站免费观看 | 天天干天天爽天天操 | 国产一级在线免费观看 | 操大爷影院 | 91原创国产 | 国产精品视频第一区二区三区 | 98免费视频| 午夜秀场在线观看 | chinesexxxx高中生gay| 国产亚洲精品高清在线 | 美国复古性xxxx | 性奶乳妇 | 极品 女神校花 露脸91 | 91一个人的在线观看www | 91夜夜人人揉人人捏人人添 | 欧美性f | 精品国产一二三区在线影院 | 水多多凹凸福利视频导航 | 日本大乳护士的引诱图片 | 干b视频在线观看 | 高h射尿|