第一篇随笔,从我的上机作业开始。话不多说了,往下看吧。
首先我要写的东西是和我们最近学习的java有关系的布局,以上机作业为原型,做了些许修改然后上传的,所以还是属于作者的东西呢
先来些日历的实现部分吧,定义CalendarBean类,用来实现日历上星期与日期的功能。
import java.util.Calendar; public class CalendarBean { String dat[]; 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 日历 = 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; } }
然后就是布局的实现了,定义CalendarFrame类,实现日历上的布局,在这整个布局的底下,有一个提醒输入年份的框,月份还没有加上。
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.JFrame; public class CalendarFrame extends JFrame implements ActionListener { JLabel labelDay[] = new JLabel[42]; JButton titleName[] = new JButton[7]; JTextField m_monster = new JTextField("输入年份:",12); String name[] = {"日","一","二","三","四","五","六"}; JButton nextMonth,previousMonth; CalendarBean calendar; JLabel showMessage = new JLabel("2",JLabel.CENTER); int year=2011,month=2; public CalendarFrame(){ JPanel pCenter = new JPanel(); pCenter.setLayout(new GridLayout(7,7)); 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 SoftBevelBorder(BevelBorder.LOWERED)); pCenter.add(labelDay[i]); } calendar = new CalendarBean(); nextMonth = new JButton("下月"); previousMonth = new JButton("上月"); nextMonth.addActionListener(this); previousMonth.addActionListener(this); m_monster.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int y; String str = e.getActionCommand(); y = Integer.parseInt(str); year = y; setYearAndMonth(y,month); } }); JPanel pNorth = new JPanel(), pSouth= new JPanel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); pSouth.add(m_monster); add(pCenter,BorderLayout.CENTER); add(pNorth,BorderLayout.NORTH); add(pSouth,BorderLayout.SOUTH); setYearAndMonth(year,month); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void setYearAndMonth(int y,int m) { calendar.setYear(y); calendar.setMonth(m); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++){ labelDay[i].setText(day[i]); showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月"); } } 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]); } } showMessage.setText("日历"+calendar.getYear()+"年"+calendar.getMonth()+"月"); } }
两个主要功能的实现就写好了,最后就是让它动起来了,如下:
public class CalendarMainClass { public static void main(String[] args) { CalendarFrame frame = new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.setYearAndMonth(2015,5); } }
这样,就写完了,来看看结果如何吧
下图是刚运行完的界面,细心的读者就是发现上面代码里刚开始默认的时间是2015年5月哦
在下面的年份框里输入2014:
动动月份试试:
这样所有的功能就简单的实现了,当然这只是1.0版本,界面什么的做的还比较粗糙,完了我会再修改一下。第一次写,写的不好的地方大家多多关照,谢谢。
原文:http://www.cnblogs.com/Lynn--/p/Lynn.html