基于java GUI实现的一个日历记事本小项目 您所在的位置:网站首页 手机电子日历记事本怎么设置 基于java GUI实现的一个日历记事本小项目

基于java GUI实现的一个日历记事本小项目

2024-07-11 13:08| 来源: 网络整理| 查看: 265

最近刚学了gui部分的内容,练手和两个同学一起做了一个小日历,第一次做没啥经验,代码多多少少有点不规范的,各位见谅,下面浅浅讲一下思路。

代码已给出了每段比较详细的注释,整体分FirstFrame和MainFrame,first上有两个按钮,分别加监听触发退出和进入主页面

 

然后main中是整体精华所在,通过不断setText每个按钮上的文字,来达到切换时,日期自动切换的功能,然后,有年份选择和月份选择两个列表框,通过获取列表框中的内容,来设置当前应该显示的时间。

这个是mainframe的页面:

 然后本日历记事本还可以通过点击当天按钮,然后唤起一个文本框,可以输入想要记录的备忘事项,并且,当下次打开程序时,上次记录的事项可以通过文件可持续化保存,这也属于一个小功能。

整体项目分三个java文件,分别是TextBook:主要代码,TextFile:文件操作,封装在一个类中了,Start启动器

在文章底部有源码链接

下面是TextBook.java文件:

package com.tt.Textbook; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; //初始页面 class FirstFrame extends JFrame { public FirstFrame(){ //container分为上下表格布局 Container FirstContainer = this.getContentPane(); FirstContainer.setLayout( new GridLayout(2,1) ); //需要两个面板,分别是标题和退出框以及进入按钮 Panel panel1 = new Panel( new BorderLayout() ); Panel panel2 = new Panel( new GridLayout(1,3) );//下部分的1行3列表格布局 Panel panel3 = new Panel( new GridLayout(2,1) );//下面中间的二层布局 Panel panel4 = new Panel( new FlowLayout() );//下中之一 Panel panel5 = new Panel( new FlowLayout() );//下中之二 //导入标题图片 ImageIcon Titleimg = new ImageIcon( "photo/title.png" ); JLabel l1 = new JLabel(); l1.setIcon( Titleimg ); JLabel l2 = new JLabel(); l2.setIcon( new ImageIcon("............") ); JLabel l3 = new JLabel(); l3.setIcon( new ImageIcon("............") ); panel1.add( l1, BorderLayout.CENTER ); //进入主页面按钮 JButton b1 = new JButton("退出程序"); JButton b2 = new JButton("进入主页面 "); panel2.add( l2 ); panel4.add( b2 ); panel5.add( b1 ); panel3.add( panel4 ); panel3.add( panel5 ); panel2.add( panel3 ); panel2.add( l3 ); //container添加两个面板 FirstContainer.add( panel1 ); FirstContainer.add( panel2 ); b1.addActionListener(new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { System.exit(0); } }); b2.addActionListener(new ActionListener() //添加监听事件,点击后可以打开主Frame { @Override public void actionPerformed(ActionEvent e) { new MainFrame(); dispose(); } }); //一些初始化操作 this.setVisible(true); this.setBounds(500,300,700,500); this.setTitle( "桌面记事本" ); this.setDefaultCloseOperation( EXIT_ON_CLOSE ); this.setResizable( false ); } } //主要界面 class MainFrame extends JFrame { private String content; private JComboBox YearBox=new JComboBox(); private JComboBox MonthBox=new JComboBox(); //两个标签,在init中设置字体样式 private JLabel YearLabel=new JLabel("年份:"); private JLabel MonthLabel=new JLabel("月份:"); //两个按钮,需要满足监听功能 private JButton b_ok=new JButton("确定"); private JButton b_today=new JButton("今天"); //前后两个按钮 private JButton upJButton=new JButton( new ImageIcon("photo/line_left.png")); private JButton downJButton=new JButton(new ImageIcon("photo/line_right.png")); //使用日期类,获取当前年份,月份,日期 private Date date = new Date();//属于一个工具对象,对日期的操作。 //日期类的get方法获取当前时间 private int NowYear = date.getYear() + 1900; private int NowMonth = date.getMonth(); private boolean todayFlag = false;//标志开始设置成false是因为有一个初始化 private JButton[] b_week=new JButton[7]; private ItemButton[] b_day=new ItemButton[42]; private String[] week= {"MON","TUE","WED","THU","FRI","SAT","SUN"}; private int Month=0; private String Year=null; private static JLabel BeijingTime; private Calendar nowTime=Calendar.getInstance(); private static String sday; public void init() //初始化 { Container containerMain=this.getContentPane(); containerMain.setLayout(new BorderLayout()); //首先进行页面布局,分为两个panel,操作panel和主日历panel JPanel PanelOpreater = new JPanel(new FlowLayout()); JPanel PanelMain = new JPanel(new GridLayout(7,7,4,4)); JPanel PanelNow = new JPanel(new FlowLayout()); //可写可不写 //container1.setLayout(new BorderLayout()); //设置label字体样式 YearLabel.setFont(new Font("Dialog",Font.BOLD,16)); MonthLabel.setFont(new Font("Dialog",Font.BOLD,16)); for(int i = NowYear - 20;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有