Java小程序之记事本

这个记事本只做了个界面,里面的功能就做了三四个吧!特别适合新手学做GUI这一章。

我主要分了两大类,代码注释上面都有。

第一大类我主要把用到的所有组件全部定义了出来,这样看起来更方便一点

第二大类就是把左右的组件new出来,添加到该添加的地方。

这里注意一下 这里面是有图片标的,我把所用到的图标放到下面,你们看着能放到地方上就行,不需要图片一样,可以在百度,随便找小一点的图标就行。也可以裁剪我发的s所用到的图标
图片找好以后,在Java项目下新建一个Folder名字为image(当然名字也可以自己改,如果改名的话,代码里面所用到的地方也要改一下,因为我是以image命名的)
图片放到Folder里面,如图所示
代码如下所示:

package gra_face;

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

public class JShiBen{
	public static void main(String[] args) {		//主函数
		
		new JShiBen();		
	}
	
	public JShiBen(){
/*
 * 第一大类
 * */
		
//创建窗体		
		JFrame ck=new JFrame("记事本");
		
//		菜单面板
		JMenuBar cdmb;
		
//		JMenu 可以有下一级		JMenuItem 终极菜单 不能有下一级
		JMenu cd1,cd2,cd3,cd4,cd5;	
		JMenuItem[] cdx=new JMenuItem[25];
		JMenu yj1,yj2;
		JMenuItem ej1,ej2,ej3,ej4,ej5;
		
//		JToolBar	工具条		JButton 按钮
		JToolBar gjt;
		JButton	an1,an2,an3,an4,an5;
		
//		JTextArea 文本域		JScrollPane	滚动条
		final JTextArea wby;
		JScrollPane gdt;
		
//		Date 时间类
		Calendar sj;
		JLabel bq;
		
//		设置字体		
		Font zt=new Font("楷体",Font.ITALIC + Font.BOLD,18) ;
		
		
/*
 * 第二大类
 */	
		
//	一、菜单面板一栏		
		cdmb=new JMenuBar();
		
//文件		
		cd1=new JMenu("文件(F)");
		cd1.setMnemonic('F');		//mnemonic - 表示助记符的键代码
		
		yj1=new JMenu("新建(N)");
		ej1=new JMenuItem("文档",new ImageIcon("image文档.png"));
		ej2=new JMenuItem("模板",new ImageIcon("image模板.png"));
		
		cdx[0]=new JMenuItem("打开(O)");
		cdx[0].setActionCommand("打开");
		
		cdx[1]=new JMenuItem("关闭(D)");
		
		cdx[2]=new JMenuItem("保存(S)");
		cdx[2].setActionCommand("保存");
		
		cdx[3]=new JMenuItem("另存为(R)");
		cdx[3].setActionCommand("另存为");
		
		cdx[4]=new JMenuItem("页面设置(U)");
		cdx[5]=new JMenuItem("打印(P)");
		cdx[6]=new JMenuItem("退出(V)");
		cdx[6].setActionCommand("退出");
		
		yj1.add(ej1);	yj1.add(ej2);
		
		cd1.add(yj1);	cd1.add(cdx[0]);	cd1.add(cdx[1]);	cd1.add(cdx[2]);
		cd1.add(cdx[3]);	
		cd1.addSeparator();
		cd1.add(cdx[4]);	cd1.add(cdx[5]);
		cd1.addSeparator();
		cd1.add(cdx[6]);
		
//编辑				
		cd2=new JMenu("编辑(E)");
		cd2.setMnemonic('E');
		
		cdx[7]=new JMenuItem("撤销(U)");
		cdx[8]=new JMenuItem("剪贴(T)");
		cdx[9]=new JMenuItem("复制(C)");
		cdx[10]=new JMenuItem("黏贴(P)");
		cdx[11]=new JMenuItem("删除(L)");
		cdx[12]=new JMenuItem("查找(F)");
		cdx[13]=new JMenuItem("替换(H)");
		cdx[14]=new JMenuItem("转到(G)");
		cdx[15]=new JMenuItem("全选(A)");
		cdx[16]=new JMenuItem("时间日期(D)");
		
		cd2.add(cdx[7]);	cd2.add(cdx[8]);	cd2.add(cdx[9]);	cd2.add(cdx[10]);
		cd2.addSeparator();
		cd2.add(cdx[11]);	cd2.add(cdx[12]);	cd2.add(cdx[13]);	cd2.add(cdx[14]);
		cd2.addSeparator();
		cd2.add(cdx[15]);	cd2.add(cdx[16]);
		
//格式		
		cd3=new JMenu("格式(O)");
		cd3.setMnemonic('O');
		
		cdx[17]=new JMenuItem("自动换行(U)");
		cdx[18]=new JMenuItem("字体(T)");
		
		cd3.add(cdx[17]);	cd3.add(cdx[18]);
	
//查看
		cd4=new JMenu("查看(V)");
		cd4.setMnemonic('V');
		
		yj2=new JMenu("缩放(V)");
		ej3=new JMenuItem("放大(U)");
		ej4=new JMenuItem("缩小(T)");
		ej5=new JMenuItem("默认缩放(T)");

		cdx[19]=new JMenuItem("状态栏(T)");
		
		yj2.add(ej3);	yj2.add(ej4);	yj2.add(ej5);
		cd4.add(yj2);	cd4.add(cdx[19]);
		
//帮助
		cd5=new JMenu("帮助(H)");
		cd5.setMnemonic('H');
		
		cdx[20]=new JMenuItem("查看帮助(H)");
		cdx[21]=new JMenuItem("关于记事本(A)");
		
		cd5.add(cdx[20]);	cd5.add(cdx[21]);
		
//将菜单项文件、编辑、格式、查看、帮助一栏添加到菜单面板		
		cdmb.add(cd1);	cdmb.add(cd2);	cdmb.add(cd3);	cdmb.add(cd4);
		cdmb.add(cd5);
		
//	二、工具条一栏
		gjt=new JToolBar();
		
		an1=new JButton(new ImageIcon("image/编辑.png"));
		an1.setToolTipText("打开");
		an2=new JButton(new ImageIcon("image/粘贴.png"));
		an2.setToolTipText("粘贴");
		an3=new JButton(new ImageIcon("image/复制.png"));
		an3.setToolTipText("复制");
		an4=new JButton(new ImageIcon("image/剪贴板.png"));
		an4.setToolTipText("剪贴板");
		an5=new JButton(new ImageIcon("image/删除.png"));
		an5.setToolTipText("删除");
		
//	将图片按钮编辑、粘贴、复制、剪贴板、删除一栏添加到工具条			
		gjt.add(an1);	gjt.add(an2);	gjt.add(an3);	gjt.add(an4);
		gjt.add(an5);
		
//	三、文本域一栏
		wby=new JTextArea();
		gdt=new JScrollPane(wby);
		wby.setFont(zt); 		//设置文本域里面的字体Date
		wby.setBackground(Color.pink);
		
//	四、时间日期
		sj=Calendar.getInstance();		//抽象类Calendar	Date的子类
		int year=sj.get(Calendar.YEAR);
		int month=sj.get(Calendar.MONTH)+1;
		int day=sj.get(Calendar.DATE);
		int hour=sj.get(Calendar.HOUR_OF_DAY);
		int minute=sj.get(Calendar.MINUTE);
		int second=sj.get(Calendar.SECOND);
		int week=sj.get(Calendar.DAY_OF_WEEK);
		String a =year+" / "+month+" / "+day+"         "+hour+" : "+minute+" : "+second;
		bq=new JLabel(a,JLabel.RIGHT);
		
//	将菜单面板、工具条、滚动条添加到窗体
		ck.setJMenuBar(cdmb);
		ck.add(gjt,BorderLayout.NORTH);
		ck.add(bq,BorderLayout.SOUTH);
		ck.add(gdt);
		
//	设置边框属性
		ck.setSize(600, 500);
		ck.setLocationRelativeTo(null);			//居中
		ck.setIconImage((new ImageIcon("image/记事本.png")).getImage());
		ck.setVisible(true);
		
//	六、事件处理
		cdx[0].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(e.getActionCommand().equals("打开")){
					JFileChooser wjxz=new JFileChooser();
					wjxz.setDialogTitle("选择文件");
					wjxz.showOpenDialog(null);
					wjxz.setVisible(true);
					
					
					//知道要得到用户选择的文件路径--全路径==绝对路径
					String wjlj = wjxz.getSelectedFile().getAbsolutePath(); 
					//System.out.println(filename);
					//因为这个记事本要读取的是字符文件而不是二进制文件
					//所以应当选择 字符流中的Bufferedreader 
					//效率高 
					FileReader wjl = null;
					BufferedReader hcl = null; 
					try {
						wjl = new FileReader(wjlj);
						hcl = new BufferedReader(wjl);
						// 读取文件信息 并显示在文本框中
						String s = "";
						String zfc = "";
						while ((s = hcl.readLine()) != null) {
							zfc += (s + "\r\n");
						}
						// 放置到jta即可
						wby.setText(zfc);
					} catch (Exception aa) {
						aa.printStackTrace();
					} finally {
						try {
							wjl.close();
							hcl.close();
						} catch (Exception e1) {
							e1.printStackTrace();
						}
					}
						
				}
			}
		}) ;
		
		cdx[2].addActionListener(new ActionListener(){
			private Object wby;

			public void actionPerformed(ActionEvent e){
				if(e.getActionCommand().equals("保存")){
					JFileChooser wjxz=new JFileChooser();
					wjxz.setDialogTitle("保存");
					wjxz.showSaveDialog(null);
					wjxz.setVisible(true);
				
				}
			}
		}) ;
		
		cdx[3].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(e.getActionCommand().equals("另存为")){
					JFileChooser wjxz=new JFileChooser();
					wjxz.setDialogTitle("另存为");
					wjxz.showSaveDialog(null);
					wjxz.setVisible(true);
				}
			}
		}) ;
		
		cdx[6].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(e.getActionCommand().equals("退出")){
					System.exit(0) ;
				}
			}
		}) ;

	}

}


运行效果图如下所示:
效果图
如有不懂,加微信 :zhi19990327
备注 :Java小程序之记事本

发布了2 篇原创文章 · 获赞 3 · 访问量 342

猜你喜欢

转载自blog.csdn.net/AresPer/article/details/101859664