zoukankan      html  css  js  c++  java
  • Test__GUI__用java编写一个简单的记事本程序,打包成jar双击运行

    需求:

    用所学的java知识编写一个记事本,具备打开文件,保存文件,退出文件等基本功能

    并打包成jar,能够双击运行

    知识点:

    1,需要用到窗体的基本知识Frame的配置,

    2,菜单及其配置MenuBar,Menu,MenuItem

    3,文本区域 TextArea

    4,各组件对应的监听器,内部类

    5,IO流

    实现过程:

    package mymenu;	//打包
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;	
    public class MyMenu
    {
    	private Frame f;
    	private MenuBar bar;
    	private Menu m,subMenu,m_2;
    	private MenuItem openItem,saveItem,closeItem,subItem;
    	private FileDialog open,save;
    	private TextArea ta;
    	private File file;
    
    	MyMenu(){
    		init();
    	}
    	
    	public void init()//窗体构建
    	{
    		f = new Frame("My Window");//窗体
    		f.setBounds(300,200,600,400);
    		
    		bar = new MenuBar();	//菜单栏
    		m = new Menu("文件");		//菜单
    		m_2=new Menu("菜单2");
    		subMenu = new Menu("子菜单");
    		openItem = new MenuItem("打开");
    		saveItem = new MenuItem("保存");
    		closeItem = new MenuItem("退出");//条目
    		subItem = new MenuItem("子条目");
    		ta = new TextArea(20,80);
    
    		subMenu.add(subItem);
    		m.add(openItem);
    		m.add(saveItem);
    		m.add(subMenu);//在菜单中添加子菜单
    		m.add(closeItem);	
    		bar.add(m);	//将菜单添加到菜单栏
    		bar.add(m_2);
    		f.setMenuBar(bar);	//菜单栏设置到窗体
    		f.add(ta);//添加文本框
    
    		open = new FileDialog(f,"打开文件",FileDialog.LOAD);//添加对话框,参见API文档Dialog构造方法
    		save = new FileDialog(f,"保存文件",FileDialog.SAVE);
    
    		myEvent();
    		f.setVisible(true);
    	}
    	
    	public void myEvent()//事件监听
    	{
    		openItem.addActionListener(new ActionListener()//菜单条目监听:打开
    		{
    			public void actionPerformed(ActionEvent e)
    			{
    				open.setVisible(true);
    				String dirPath = open.getDirectory();//获取对话框目录;FileDialog类的方法
    				String fileName= open.getFile();	//获取对话框选定文件
    				if(dirPath==null || fileName==null)	//点取消
    					return;
    				ta.setText("");//打开文件之前清空文本区域
    				file = new File(dirPath,fileName);
    				try
    				{
    					BufferedReader bufr = new BufferedReader(new FileReader(file));
    					String line = null;
    					while ((line=bufr.readLine()) !=null)
    					{
    						ta.append(line+"
    ");
    					}
    				}
    				catch (IOException ie){
    					throw new RuntimeException("读取失败!");
    				}
    			}
    		});
    		saveItem.addActionListener(new ActionListener()//菜单条目监听:保存
    		{	
    			public void actionPerformed(ActionEvent e)
    			{
    				if(file==null)
    				{
    					save.setVisible(true);
    					String dirPath = save.getDirectory();
    					String fileName= save.getFile();
    					if(dirPath==null || fileName==null)
    						return;
    					file = new File(dirPath,fileName);				
    				}
    				try
    				{
    					BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
    					String text = ta.getText();
    					bufw.write(text);
    					bufw.close();
    				}
    				catch (IOException ex)
    				{
    					throw new RuntimeException();
    				}
    			}
    		});
    		closeItem.addActionListener(new ActionListener(){//菜单条目监听:退出
    			public void actionPerformed(ActionEvent e){
    				System.exit(0);
    			}
    		});
    
    		f.addWindowListener(new WindowAdapter(){//窗体事件,关闭
    			public void windowClosing(WindowEvent e){
    				System.exit(0);
    			}
    			});
    	}
    
    	public static void main(String[] args) 
    	{
    		new MyMenu();
    	}
    }

    1,编译操作:带包的java文件编译格式

    F:JAVATest>javac -d f:java est MyMenu.java,

    2,创建归档文件,后缀名不限


    3,将mymenu压缩到jar包


    4,用winrar打开jar包可发现已经写入了归档


    5,双击运行jar包

    运行效果:能够对文件进行打开,编辑,保存,退出等基本功能







  • 相关阅读:
    vuejs组件交互
    markdown table语法
    vue循环中的v-show
    apache跨域
    sublime text执行PHP代码
    PHP语法
    方法(method)和函数(function)有什么区别?
    PHP MVC单入口
    phpstudy部署thinkPHP
    MACD判断定背离,底背离
  • 原文地址:https://www.cnblogs.com/Joure/p/4337204.html
Copyright © 2011-2022 走看看