標籤:java 日曆
自己寫的一個小小日曆,運行程式是柯自動定位到當前年月日,當點擊下個月按鈕是會定位到下個月的這一天,就是說天數不會變。當在一個月中點擊某一天時,下面的時間也會隨時變化。
import java.util.Calendar;public class CalendarMainClass { public static void main(String args[]) { CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame. setYearAndMonth((Calendar.getInstance()).get(Calendar.YEAR),(Calendar.getInstance()).get(Calendar.MONTH)+1); }}import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;public class CalendarFrame extends JFrame implements ActionListener, MouseListener{ /** * */ private static final long serialVersionUID = 1L; JLabel labelDay[]=new JLabel[42]; JButton titleName[]=new JButton[7]; JLabel labelCom=new JLabel();//跟蹤選中的日期 String name[]={"日","一","二","三", "四","五","六"}; JButton nextMonth,previousMonth; CalendarBean calendar; JLabel showMessage=new JLabel("",JLabel.CENTER); int year=2011,month=2; public CalendarFrame() { JPanel pCenter=new JPanel(); pCenter.setBackground(Color.white); pCenter.setLayout(new GridLayout(7,7)); //將pCenter的布局設定為7行7列的GridLayout 布局。 for(int i=0;i<7;i++) { titleName[i]=new JButton(name[i]); titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED)); pCenter.add(titleName[i]); } for(int i=0;i<42;i++) { labelDay[i]=new JLabel("",JLabel.CENTER); //labelDay[i].setBorder(new EtchedBorder(EtchedBorder.RAISED)); labelDay[i].setBorder(BorderFactory.createLineBorder (Color.orange, 1)); pCenter.add(labelDay[i]);//pCenter添加組件labelDay[i]。 } calendar=new CalendarBean(); nextMonth=new JButton("下月"); previousMonth=new JButton("上月"); nextMonth.addActionListener(this); previousMonth.addActionListener(this); JPanel pNorth=new JPanel(), pSouth=new JPanel(); pCenter.setBackground(Color.white); pNorth.setBackground(Color.white); pSouth.setBackground(Color.white); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); add(pCenter,BorderLayout.CENTER); add(pNorth,BorderLayout.NORTH); // 視窗添加pNorth 在北面地區 add(pSouth ,BorderLayout.SOUTH); // 視窗添加pSouth 在南地區。 //setYearAndMonth(year,month); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void setYearAndMonth(int y,int m) { year=y; month=m; calendar.setYear(y); calendar.setMonth(m); calendar.setDay((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH)); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); labelDay[i].addMouseListener(this);//對每個標籤監聽 if(day[i]!=null&&day[i].equals(String.valueOf(calendar.getDay())))//系統日期為黃色 { labelDay[i].setOpaque(true); // 標籤設定不透明才能設定顏色 labelDay[i].setBackground(Color.orange); labelCom= labelDay[i];//點亮的標籤 } } showMessage.setText("日曆:"+calendar.getYear()+"年"+ calendar.getMonth()+"月"+ calendar.getDay()+"日"); } public void actionPerformed(ActionEvent e) { if(e.getSource()==nextMonth) { month=month+1; if(month>12) { month=1; year=year+1; } calendar.setMonth(month); calendar.setYear(year); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setOpaque(false); } for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); labelDay[i].addMouseListener(this); if(day[i]!=null&&day[i].equals(String.valueOf(calendar.getDay()))) { labelDay[i].setOpaque(true); labelDay[i].setBackground(Color.orange); labelCom= labelDay[i]; } } } else if(e.getSource()==previousMonth) { month=month-1; if(month<1) { month=12; year=year-1; } calendar.setMonth(month); calendar.setYear(year); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setOpaque(false); } for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); labelDay[i].addMouseListener(this); if(day[i]!=null&&day[i].equals(String.valueOf(calendar.getDay()))) { labelDay[i].setOpaque(true); labelDay[i].setBackground(Color.orange); labelCom= labelDay[i]; } } } showMessage.setText("日曆:"+calendar.getYear()+"年"+ calendar.getMonth()+"月"+ calendar.getDay()+"日"); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { JLabel i=(JLabel)e.getSource(); if(i.getText()!=null) { labelCom.setOpaque(false); i.setOpaque(true); i.setBackground(Color.orange); showMessage.setText("日曆:"+calendar.getYear()+"年"+ calendar.getMonth()+"月"+Integer.parseInt(i.getText())+"日"); labelCom=i; //重新整理介面 for(int j=0;j<42;j++) { labelDay[j].repaint(); } } } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub }}import java.util.Calendar;public class CalendarBean { String day[]; int year=2005,month=0; int DDay=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 void setDay(int DDay) { this.DDay=DDay; } public int getDay() { return DDay; } public String[] getCalendar() { String a[]=new String[42]; Calendar 日曆=Calendar.getInstance();//獲得系統時間 日曆.set(year,month-1,1); //設定指定時間 int 星期幾=日曆.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=星期幾,n=1;i<星期幾+day;i++) { a[i]=String.valueOf(n) ; n++; } return a; } }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java小日曆