码迷,mamicode.com
首页 > 其他好文 > 详细

布局与日历

时间:2015-11-29 22:52:20      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

第一篇随笔,从我的上机作业开始。话不多说了,往下看吧。

首先我要写的东西是和我们最近学习的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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!