当前位置:首页 > 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的东边部分,用来显示日历每天的星期和号数;
使用以上方法就将一个大的日历划分成几个小的模块,然后一一实现就简单了
共分享92篇相关文档