java日历记事本(无敌版带提醒功能调整时区更换图片铃声功能) 联系客服

发布时间 : 星期五 文章java日历记事本(无敌版带提醒功能调整时区更换图片铃声功能)更新完毕开始阅读

public Month(CalendarPad calendar) {

super(BoxLayout.X_AXIS);//用super继承父类的构造方法,box中的组件从左到右布置器件; //把calendar的时间传进来; this.calendar=calendar;

showMonth=new JTextField(2);//区域大小设置 month=calendar.getMonth();

showMonth.setForeground(Color.blue); //显示字体颜色

showMonth.setFont(new Font(\设置字体,大小; //新建按钮;

nextMonth=new JButton(\下月\ lastMonth=new JButton(\上月\ //添加按钮; add(lastMonth); add(showMonth); add(nextMonth); //添加事件监听器;

showMonth.addActionListener(this); lastMonth.addActionListener(this); nextMonth.addActionListener(this); showMonth.setText(\ }

//设置月份;

public void setMonth(int month) {

if(month<=12&&month>=1) {

this.month=month; } else {

this.month=1; }

showMonth.setText(\ }

//获取月份;

public int getMonth() {

return month; }

//事件监听方法;

public void actionPerformed(ActionEvent e) {

//按下lastMonth按钮

if(e.getSource()==lastMonth) {

//如果month>2,则month直接减1,重设置日历; if(month>=2) {

month=month-1;

calendar.setMonth(month);

calendar.setCalendar(calendar.getYear(),month); }

//如果month==1,则year-1,而month为12,重设日历; else if(month==1) {

month=12;

int year=calendar.getYear()-1; calendar.setMonth(month); calendar.setYear(year);

calendar.setCalendar(year,month); }

showMonth.setText(\ //显示内容的设置; }

// 如果 nextMonth按钮被按下; else if(e.getSource()==nextMonth) {

//如果month小于12,则month直接加1,再重设日历; if(month<12) {

month=month+1;

calendar.setMonth(month);

calendar.setCalendar(calendar.getYear(),month); }

//如果month=12,那么year+1,并且month变为1,再重设日历; else if(month==12) {

month=1;

calendar.setYear(calendar.getYear()+1); calendar.setMonth(month);

calendar.setCalendar(calendar.getYear(),month); }

showMonth.setText(\设置显示内容; }

else if(e.getSource()==showMonth) {

month=Integer.parseInt(showMonth.getText());

if((month>=1)&&(month<=12)){ try {

calendar.setMonth(month);

calendar.setCalendar(calendar.getYear(),month); }

catch(NumberFormatException ee) {

//showMonth.setText(\ calendar.setMonth(month);

calendar.setCalendar(calendar.getYear(),month); } }

showMonth.setText(\ } } }

CalendarImage.java

package diaoshizhe;

import javax.swing.*; import java.io.*; import java.awt.*;

//继承了JPanel类,用于显示图片;

public class CalendarImage extends JPanel { /** * */ private static final long serialVersionUID = 1L; File imageFile;//定义文件; Image image;//定义图片; Toolkit tool;//定义工具;

//构造方法

public CalendarImage() { tool=getToolkit();//获取工具; }

//设置图像文件;

public void setImageFile(File f)

{ imageFile =f; try{ image=tool.getImage(imageFile.toURI().toURL());//得到图像文件; } catch (Exception eeee) { } repaint();//重绘; }

//重载paintComponent方法

public void paintComponent(Graphics g) { super.paintComponent(g); int w=getBounds().width; int h=getBounds().height; g.drawImage(image,0,0,w,h,this); } }

四、 调试

在调试过程中遇到了很多问题,可以说是一边写代码一遍调试的(个人认为这也是正确方法,如果写完所有代码再调试就太晚了),在调试的过程中遇到了很多问题,在这里举最关键的,印象最深的问题列举。

遇到的问题1:

日历面板如何设计,怎样才能较完整的实现日历的功能,在这个方面的设计我头脑有点晕,分不清几个模块如何拼接在一起。如何显示日历面板,通过百度我搜索了一下前人的经验,又看了一些优秀案例,同时参照自己电脑上的日历,有了解决方法。

解决:

设置一个大的JPanel叫做leftUp(因为左上角是日历,所以名字叫leftUp),然后设置几个小的组建,分别是

JPanel leftUp_center=new JPanel();// leftUp_center为窗口的leftUp的中间部分,用于显示日历;

JPanel leftUp_north=new JPanel();//leftUp_north为窗口的leftUp的上部分,用于显示年月及相关按钮;

JPanel leftUp_center_east=new JPanel();//leftUp_center_east是窗口的leftUp_center的东边部分,用来显示日历每天的星期和号数;

使用以上方法就将一个大的日历划分成几个小的模块,然后一一实现就简单了