Java實(shí)現(xiàn)窗體程序顯示日歷
本文實(shí)例為大家分享了Java實(shí)現(xiàn)窗體程序顯示日歷的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)訓(xùn)要求:
1.使用BorderLayout 進(jìn)行總體布局
2.在North 位置放置包含兩個(gè)按鈕( 上月和下月)的Panel
3.在South 位置放置一個(gè)Label 用于顯示當(dāng)前年份和月份
4.在Center 位置放置一個(gè)顯示日歷的Panel
5.顯示日歷的Panel 設(shè)置7 行7 列的GridLayout 布局,其中第1行放置7個(gè)按鈕顯示周“幾”,其他6 行放置42 個(gè)Label 用于顯示期。
6.啟動(dòng)程序時(shí)日歷中默認(rèn)顯示當(dāng)前月份的日歷。
7.點(diǎn)擊“上月”和“下月”可翻看上個(gè)月和下個(gè)月的日歷。
8.程序運(yùn)行結(jié)果如下圖:
代碼:
CalendaBean.java
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; ? import javax.swing.*; public class CalendaBean implements ActionListener { ?? ?JLabel[] label; ?? ?JLabel now; ?? ?String[] day; ?? ?int year = 0, month = 0; ?? ?public void setYear(int year) { ?? ??? ?this.year = year; ?? ?} ? ?? ?public void setMonth(int month) { ?? ??? ?this.month = month; ?? ?} ? ?? ?public void actionPerformed(ActionEvent e) { ?? ??? ?String str = e.getActionCommand(); ?? ??? ?if (str.equals("lastmonth")) { ?? ??? ??? ?month--; ?? ??? ??? ?if (month == 0) { ?? ??? ??? ??? ?month = 12; ?? ??? ??? ??? ?year--; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?else if (str.equals("nextmonth")) { ?? ??? ??? ?month++; ?? ??? ??? ?if (month == 13) { ?? ??? ??? ??? ?month = 1; ?? ??? ??? ??? ?year++; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?now.setText("日歷:" + year + "年" + month + "月"); ?? ??? ?String[] a = getCalendar(); ?? ??? ?for (int i = 0; i < a.length; i++) { ?? ??? ??? ?label[i].setText(" ? ? ? ? ?"+a[i]); ?? ??? ?} ?? ??? ? ?? ?} ? ?? ?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; ?? ?} }
Test.java
import java.awt.*; import java.awt.event.*; ? import javax.swing.*; ? public class Test extends JFrame { ?? ?JButton b1, b2, b3, b4, b5, b6, b7, bx, by; ?? ?CalendaBean cb = new CalendaBean(); ?? ?JLabel[] label; ?? ?JLabel now; ? ?? ?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() { ?? ??? ?int year, month; ?? ??? ?setLayout(new BorderLayout()); ?? ??? ?JPanel pNorth = new JPanel(); ?? ??? ?cb = new CalendaBean(); ?? ??? ?cb.setYear(2017); ?? ??? ?cb.setMonth(11); ?? ??? ?String[] a = cb.getCalendar(); ?? ??? ?bx = new JButton("上月"); ?? ??? ?by = new JButton("下月"); ?? ??? ?bx.setActionCommand("lastmonth"); ?? ??? ?by.setActionCommand("nextmonth"); ?? ??? ?bx.addActionListener(new ActionListener() { ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?cb.actionPerformed(e); ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?by.addActionListener(new ActionListener() { ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?cb.actionPerformed(e); ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?pNorth.add(bx); ?? ??? ?pNorth.add(by); ?? ??? ?add(pNorth, BorderLayout.NORTH); ?? ??? ?GridLayout grid = new GridLayout(7, 7); ?? ??? ?JPanel pCenter = new JPanel(); ?? ??? ?b1 = new JButton("日"); ?? ??? ?b2 = new JButton("一"); ?? ??? ?b3 = new JButton("二"); ?? ??? ?b4 = new JButton("三"); ?? ??? ?b5 = new JButton("四"); ?? ??? ?b6 = new JButton("五"); ?? ??? ?b7 = new JButton("六"); ?? ??? ?pCenter.add(b1); ?? ??? ?pCenter.add(b2); ?? ??? ?pCenter.add(b3); ?? ??? ?pCenter.add(b4); ?? ??? ?pCenter.add(b5); ?? ??? ?pCenter.add(b6); ?? ??? ?pCenter.add(b7); ?? ??? ?label = new JLabel[42]; ?? ??? ?for (int i = 0; i < 42; i++) { ?? ??? ??? ?label[i] = new JLabel(); ?? ??? ??? ?pCenter.add(label[i]); ?? ??? ?} ?? ??? ?cb.label = this.label; ?? ??? ?for (int i = 0; i < a.length; i++) { ?? ??? ??? ?label[i].setText(" ? ? ? ? ?"+a[i]); ?? ??? ?} ?? ??? ?pCenter.setLayout(grid); ?? ??? ?add(pCenter, BorderLayout.CENTER); ?? ??? ?JPanel pSouth = new JPanel(); ?? ??? ?now = new JLabel(); ?? ??? ?now.setText("日歷:" + cb.year + "年" + cb.month + "月"); ?? ??? ?cb.now = now; ?? ??? ?pSouth.add(now); ?? ??? ?add(pSouth, BorderLayout.SOUTH); ?? ?} ? }
運(yùn)行結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Netty實(shí)現(xiàn)簡(jiǎn)易版的RPC框架過(guò)程詳解
這篇文章主要為大家介紹了Netty實(shí)現(xiàn)簡(jiǎn)易版的RPC框架過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02通過(guò)代碼實(shí)例了解SpringBoot啟動(dòng)原理
這篇文章主要介紹了通過(guò)代碼實(shí)例了解SpringBoot啟動(dòng)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12SpringBoot是如何使用SQL數(shù)據(jù)庫(kù)的?
今天給大家?guī)?lái)的是關(guān)于Springboot的相關(guān)知識(shí),文章圍繞著SpringBoot是如何使用SQL數(shù)據(jù)庫(kù)的展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06詳細(xì)了解java監(jiān)聽(tīng)器和過(guò)濾器
下面小編就為大家?guī)?lái)一篇基于java servlet過(guò)濾器和監(jiān)聽(tīng)器(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-07-07Mybatis-Plus使用updateById()、update()將字段更新為null
本文主要介紹了Mybatis-Plus使用updateById()、update()將字段更新為null,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Java中如何將json字符串轉(zhuǎn)換成map/list
這篇文章主要介紹了Java中如何將json字符串轉(zhuǎn)換成map/list,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07java Socket實(shí)現(xiàn)多人群聊與私聊功能
這篇文章主要為大家詳細(xì)介紹了java Socket實(shí)現(xiàn)多人群聊與私聊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07