Java實(shí)現(xiàn)簡(jiǎn)單日歷小程序 Java圖形界面小日歷開發(fā)
今天給大家介紹一下如何用Java swing開發(fā)一款簡(jiǎn)單的小日歷,下面我們來看代碼:
首先創(chuàng)建一個(gè)CalendarBean類,用于基本的日期計(jì)算:
package other1;
import java.util.Calendar;
public class CalendarBean
{
String day[];
int year=2005,month=0;
public void setYear(int year)
{
this.year=year;
}
public int getYear()
{
return year;
}
public void setMonth(int month)
{
this.month=month;
}
public int getMonth()
{
return month;
}
public String[] getCalendar()
{
String a[]=new String[42];
Calendar date=Calendar.getInstance();
date.set(year,month-1,1);
int week=date.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=week,n=1;i<week+day;i++)
{
a[i]=String.valueOf(n) ;
n++;
}
return a;
}
}
然后再創(chuàng)建一個(gè)主界面類,用于界面的實(shí)現(xiàn):
package other1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalendarFrame extends JFrame implements ActionListener
{
JLabel labelDay[]=new JLabel[42];
JTextField text=new JTextField(10);
JButton titleName[]=new JButton[7];
JButton button = new JButton();
String name[]={"日","一","二","三", "四","五","六"};
JButton nextMonth,previousMonth;
int year=1996,month=1; //啟動(dòng)程序顯示的日期信息
CalendarBean calendar;
JLabel showMessage=new JLabel("",JLabel.CENTER);
JLabel lbl1 = new JLabel("請(qǐng)輸入年份:");
JLabel lbl2=new JLabel(" ");
public CalendarFrame()
{
setBackground(new Color(0, 128, 128));
JPanel pCenter=new JPanel();
pCenter.setBackground(new Color(0, 139, 139));
//將pCenter的布局設(shè)置為7行7列的GridLayout 布局。
pCenter.setLayout(new GridLayout(7,7));
//pCenter添加組件titleName[i]
for(int i=0;i<7;i++)
{
titleName[i]=new JButton(name[i]);
pCenter.add(titleName[i]);
}
//pCenter添加組件labelDay[i]
for(int i=0;i<42;i++)
{
labelDay[i]=new JLabel("",JLabel.CENTER);
pCenter.add(labelDay[i]);
}
text.addActionListener(this);
calendar=new CalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelDay[i].setText(day[i]);
}
nextMonth=new JButton("下月");
previousMonth=new JButton("上月");
button=new JButton("確定");
//注冊(cè)監(jiān)聽器
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
button.addActionListener(this);
JPanel pNorth=new JPanel(),
pSouth=new JPanel();
pNorth.add(showMessage);
pNorth.add(lbl2);
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(lbl1);
pSouth.add(text);
pSouth.add(button);
showMessage.setText("日歷:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" );
ScrollPane scrollPane=new ScrollPane();
scrollPane.add(pCenter);
getContentPane().add(scrollPane,BorderLayout.CENTER);// 窗口添加scrollPane在中心區(qū)域
getContentPane().add(pNorth,BorderLayout.NORTH);// 窗口添加pNorth 在北面區(qū)域
getContentPane().add(pSouth,BorderLayout.SOUTH);// 窗口添加pSouth 在南區(qū)域。
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==nextMonth)
{
month=month+1;
if(month>12)
month=1;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelDay[i].setText(day[i]);
}
}
else if(e.getSource()==previousMonth)
{
month=month-1;
if(month<1)
month=12;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelDay[i].setText(day[i]);
}
}
else if(e.getSource()==button)
{
month=month+1;
if(month>12)
month=1;
calendar.setYear(Integer.parseInt(text.getText()));
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelDay[i].setText(day[i]);
}
}
showMessage.setText("日歷:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );
}
}
最后用一個(gè)類調(diào)用即可:
package other1;
import javax.swing.JFrame;
import javax.swing.UIManager;
public class CalendarMainClass
{
public static void main(String args[])
{
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); //windows界面風(fēng)格
}catch (Exception e) {
e.printStackTrace();
}
CalendarFrame frame=new CalendarFrame();
frame.setBounds(100,100,360,300);
frame.setTitle("日歷小程序");
frame.setLocationRelativeTo(null);//窗體居中顯示
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
運(yùn)行結(jié)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java兩大工具庫(kù)Commons和Guava使用示例詳解
這篇文章主要為大家介紹了Java兩大工具庫(kù)Commons和Guava使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
idea中文件被Mark as Plain Text后恢復(fù)方式
在IntelliJ IDEA中,如果錯(cuò)誤地將文件標(biāo)記為純文本(Mark as Plain Text),可以通過在項(xiàng)目目錄中右鍵點(diǎn)擊文件并選擇“Mark as”來恢復(fù)原文件類型2024-11-11
Mybatis-Plus中的MetaObjectHandler組件的使用
MetaObjectHandler是Mybatis-Plus中一個(gè)實(shí)用組件,專門用于自動(dòng)處理實(shí)體對(duì)象中的特定字段,如創(chuàng)建時(shí)間、更新時(shí)間、創(chuàng)建人和修改人等,該接口允許開發(fā)者在不修改業(yè)務(wù)代碼的情況下,實(shí)現(xiàn)自動(dòng)填充功能,極大地簡(jiǎn)化了代碼的復(fù)雜性,感興趣的可以了解一下2024-10-10
SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway詳細(xì)分析
這篇文章主要介紹了SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04
SpringBoot?實(shí)現(xiàn)微信推送模板的示例代碼
這篇文章主要介紹了SpringBoot?實(shí)現(xiàn)微信推送模板,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):緒論
這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來幫助2021-07-07

