IO流/GUI(利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上;允许对文字内容进行编辑,并可以保存到文件。)

利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上;允许对文字内容进行编辑,并可以保存到文件。

实现代码

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

public class NoteBook_final {
	private static void createAndShowGUI() {
		JFrame f = new JFrame("XX的窗口");
		f.setSize(700,600);
		f.setLocation(300,200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//----
		JMenuBar menuBar = new JMenuBar();
		//----
		JMenu menu1 = new JMenu("文件(F)");
		JMenu menu2 = new JMenu("编辑(E)");
		JMenu menu3 = new JMenu("格式(O)");
		JMenu menu4 = new JMenu("查看(V)");
		JMenu menu5 = new JMenu("帮助(H)");
		menuBar.add(menu1);
		menuBar.add(menu2);
		menuBar.add(menu3);
		menuBar.add(menu4);
		menuBar.add(menu5);
		//-----------------------------------------------------------------
		JMenuItem item1 = new JMenuItem("新建(Ctrl+N)");
		JMenuItem item2 = new JMenuItem("保存(Ctrl+D)");
		JMenuItem item3 = new JMenuItem("另存为(Ctrl+S)");
		JMenuItem item4 = new JMenuItem("打开(Ctrl+O)");
		JMenuItem item5 = new JMenuItem("退出(Ctrl+X)");
		menu1.add(item1);
		menu1.addSeparator();  
		menu1.add(item2);
		menu1.addSeparator();  
		menu1.add(item3);
		menu1.addSeparator();  
		menu1.add(item4);
		menu1.addSeparator();  
		menu1.add(item5);
		//-----------------------------------------------------------------
		JTextArea tf = new JTextArea(30,20);
		tf.setFont(new Font("宋体", Font.PLAIN, 20));
		f.add(tf);
	//------------
		
		
		
	//--------------------
		
		SortCut(f,tf);
		scrollpane(f,tf);
		
		item1.addActionListener(e->{
		CreateNew();
		});
		
		item4.addActionListener(e->{
			ReadData(f,tf);
		});
		
		item5.addActionListener(e->{
			Exit();
		});
		
		item3.addActionListener(e->{
			WriteOther(f,tf);
		});
		
		item2.addActionListener(e->{
			WriteData(f,tf);
		});
		
		f.setJMenuBar(menuBar);
	}
	
	//---------------------------------------------------------------------------------------------------------------------
	
	public static void SortCut(JFrame f,JTextArea tf) {
		
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				/*
				int KeyCode = e.getKeyCode();
				String s=KeyEvent.getKeyText(KeyCode);
				System.out.println(s);
				*/
				
				/*
				if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
					if(e.getKeyCode() == KeyEvent.VK_N) {
						CreateNew(item1);
					}
					}
					*/
				
				if((e.isControlDown()==true)&&(e.getKeyCode() == KeyEvent.VK_N)) {
					CreateNew();
					System.out.println("新建");
				}
				if((e.isControlDown()==true)&&(e.getKeyCode() == KeyEvent.VK_X)) {
					Exit();
					System.out.println("退出");
				}
				if((e.isControlDown()==true)&&(e.getKeyCode() == KeyEvent.VK_D)) {
					WriteData(f,tf);
					System.out.println("保存");
				}
				if((e.isControlDown()==true)&&(e.getKeyCode() == KeyEvent.VK_S)) {
					WriteOther(f,tf);
					System.out.println("另存为");
				}
				if((e.isControlDown()==true)&&(e.getKeyCode() == KeyEvent.VK_O)) {
					ReadData(f,tf);
					System.out.println("打开");
				}
			}	
					
		});
		
		
	}
	
	public static void HaveSaved() {
		JFrame f = new JFrame("XX的窗体!");
		f.setLayout(new FlowLayout(FlowLayout.LEFT,100,30));
		//f.setLayout(new BorderLayout());
		f.setSize(300,200);
		f.setLocation(500, 400);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//-------
		Button btn=new Button("确认且退出");
		btn.setBounds(115,100,50,25);
		
		
		//----
		
		//JLabel label = new JLabel("已保存",JLabel.CENTER);
		JLabel label = new JLabel("已保存");
		label.setFont(new Font("宋体", Font.PLAIN, 24));
		f.add(label);
		f.add(btn);
		//------------------
		
		btn.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
	}
	
	
	
	public static void ReadData(JFrame f,JTextArea tf) {
			try {
				FileDialog fileDialog = new FileDialog(f);
				fileDialog.setVisible(true);
				String directory = fileDialog.getDirectory();//获取目录路径
				String file = fileDialog.getFile();//获取文件路径
				String path = directory + file;
				FileReader in = new FileReader(path);
				
				//----------------------------------
				
				int len = 0;
				while((len=in.read())!=-1)
				{
					String s = String.valueOf((char)len);
					tf.append(s);
				}
				in.close();
			}catch(Exception x) {
				x.printStackTrace();
			}
	}
	
	public static void WriteData(JFrame f,JTextArea tf){
			try {
				FileWriter out = new FileWriter("C:\\Users\\XX\\Desktop\\Java代码\\实验2试试\\1022.txt");
				String str = tf.getText();
				out.write(str);
				out.close();
				HaveSaved();
			}catch(Exception x) {}
	}
	
	public static void WriteOther(JFrame f,JTextArea tf){
			try {
				FileDialog fileDialog = new FileDialog(f);
				fileDialog.setVisible(true);
				String directory = fileDialog.getDirectory();//获取目录路径
				String file = fileDialog.getFile();//获取文件路径
				String path = directory + file;
				FileWriter out = new FileWriter(path);
				
				//------------------------------------
				
				String str = tf.getText();
				out.write(str);
				out.close();
				//HaveSaved();
			}catch(Exception x) {}
	}
	
	//--------------
	public static void scrollpane(JFrame f,JTextArea tf) {
		JScrollPane scrollPane = new JScrollPane(tf);
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		f.add(scrollPane);
	}
	//-------------
	public static void CreateNew() {
			createAndShowGUI();
	}
	public static void Exit() {
		System.exit(0);
	}
	
//------------------------------------------
	public static void main(String[] args) throws Exception {
	SwingUtilities.invokeLater(NoteBook_final::createAndShowGUI);
}
}

以下为代码实现结果:
实现结果
点击另存为自动弹出窗口

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值