文本编辑器设计与编写

内容
1、仿制记事本,设计与编写文本编辑器的用户交互界面
2、实现新建、打开、保存、另存为等基本功能

本题创建了两个类对象One,Two来实现,One是文本编辑器的主要编写的核心,Two是用来创建一个对话框的类
java代码实现:
One类的实现:

package main;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class One {		
	private static String filename;
	
	 public static void main(String[] args) {
		 creatwindow();
	}
	 public static void creatwindow() {
		 //设置窗口的大小
		              JFrame jf=new JFrame("记事本");
			          jf.setSize(800,800);
			          jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置窗口的控制面板和布局
			          JPanel contentPane = new JPanel();
			          jf.setContentPane(contentPane);
			          GridLayout gridlayout=new GridLayout(2,1);
			          contentPane.setLayout(gridlayout);
			          
			          JPanel contentPane1=new JPanel();
			          contentPane.add(contentPane1);
			          contentPane1.setLayout(new FlowLayout());
			          
			          JPanel contentPane2=new JPanel();
			          contentPane.add(contentPane2);
			          contentPane2.setLayout(new BorderLayout());
			          
			          JTextArea text=new JTextArea();    
			          contentPane2.add(text);
			          
			          JButton buton_1=new JButton("新建");	
			          buton_1.addMouseListener(
			        		 new MouseListener(){
								@Override
								public void mouseClicked(MouseEvent e) {		
								}
								@Override
								public void mousePressed(MouseEvent e) {
							    Two two=new Two("文件名");
							    filename=two.getUserInput();	
								try {
								FileOutputStream in=new FileOutputStream(filename);
								OutputStreamWriter os=new OutputStreamWriter(in,"Utf-8");
								os.write(text.getText());
								os.close();
								in.close();
								} catch (Exception e1) {
									// TODO Auto-generated catch block
									e1.printStackTrace();
								}
								}

								@Override
								public void mouseReleased(MouseEvent e) {
									
								}

								@Override
								public void mouseEntered(MouseEvent e) {
									
								}

								@Override
								public void mouseExited(MouseEvent e) {
									
								}
			        			 
			        		 }
			        		  );
			        	     
			          JButton buton_2=new JButton("打开");
			          buton_2.addMouseListener(
			          new MouseListener() {
						@Override
						public void mouseReleased(MouseEvent e) {
							// TODO Auto-generated method stub
							
						}
						
						@Override
						public void mousePressed(MouseEvent e) {
							JFileChooser dlg = new JFileChooser();
							dlg.setDialogTitle("请选择文件");
							int result=dlg.showOpenDialog(jf);
							
							if (result == JFileChooser.APPROVE_OPTION) {
							File file =dlg.getSelectedFile();
							try {
								FileInputStream reader=new FileInputStream(file);
								filename=file.toString();
								InputStreamReader isr = new InputStreamReader(reader, "Utf-8");
								int len ; // 循环读取 
								char[] cbuf = new char[1024];
								text.setText("");
								while ((len= isr.read(cbuf))!=-1) 
								{ 
									text.append(new String(cbuf,0,len));
								}	
								reader.close();
							} catch (Exception e1) {
								e1.printStackTrace();
							}
								}
								
						}
						
						@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
							
						}
					});
			          JButton buton_3=new JButton("保存");
			          buton_3.addMouseListener(
			        		  new MouseListener(){
								@Override
								public void mouseClicked(MouseEvent e) {
								
								}

								@Override
								public void mousePressed(MouseEvent e) {
									// TODO Auto-generated method stub
									if(filename!=null&&!filename.equals("")) {
									try {
										FileOutputStream in = new FileOutputStream(filename);
										OutputStreamWriter os=new OutputStreamWriter(in,"Utf-8");
										os.write(text.getText());
										os.close();
										in.close();
									} catch (Exception e1) {
										// TODO Auto-generated catch block
										e1.printStackTrace();
									}
									}
									
									
								}

								@Override
								public void mouseReleased(MouseEvent e) {
									// TODO Auto-generated method stub
									
								}

								@Override
								public void mouseEntered(MouseEvent e) {
									// TODO Auto-generated method stub
									
								}

								@Override
								public void mouseExited(MouseEvent e) {
									// TODO Auto-generated method stub
									
								}
			        	  
			          });
			          JButton buton_4=new JButton("另存为");
			          buton_4.addMouseListener(
			          new MouseListener() {

						@Override
						public void mouseClicked(MouseEvent e) {
							// TODO Auto-generated method stub		
						}
						@Override
						public void mousePressed(MouseEvent e) {
							// TODO Auto-generated method stub
							JFileChooser dlg = new JFileChooser();
							dlg.setDialogTitle("请选择文件");
							int result=dlg.showOpenDialog(jf);
							
							if (result == JFileChooser.APPROVE_OPTION) {
							File file =dlg.getSelectedFile();
							try {
						    FileOutputStream  in=new FileOutputStream(file);
							OutputStreamWriter os=new OutputStreamWriter(in, "Utf-8");
							os.write(text.getText());
							os.close();
							in.close();
							} catch (Exception e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}
							}
						}

						@Override
						public void mouseReleased(MouseEvent e) {
							// TODO Auto-generated method stub
							
						}

						@Override
						public void mouseEntered(MouseEvent e) {
							// TODO Auto-generated method stub
							
						}

						@Override
						public void mouseExited(MouseEvent e) {
							// TODO Auto-generated method stub
							
						}
			        	  
			        	  
			        	  
			          });
			          contentPane1.add(buton_1);	
			          contentPane1.add(buton_2);	
			          contentPane1.add(buton_3);	
			          contentPane1.add(buton_4);	
			          	          
			          jf.setVisible(true);	          
	 }

}

Two类的实现:

package main;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Two extends JFrame {	
	   private String name;
	   public Two(String name) {
		this.name=name;   
	   }
		public String getUserInput()
		{
			//创建JDialog
			final JDialog dialog=new JDialog(this,name,true);
			JPanel panel=new JPanel();
			panel.setLayout(new FlowLayout());
			dialog.setContentPane(panel);
			
			//添加控件到对话框
			JTextField testfield=new JTextField(20);
			JButton button=new JButton("确定");
			panel.add(testfield);
			panel.add(button);
			
			//点击按钮时,关闭对话框 lamda表达式
			button.addActionListener(
					new ActionListener(){
						@Override
						public void actionPerformed(ActionEvent e) {
							dialog.setVisible(false);
						}	
				 }
				);
			//显示对话框(setVisible()方法会阻塞,直到对话框关闭)
			dialog.setSize(300, 100);
			dialog.setVisible(true);		
			//对话框被关闭后,取得用户输入,并返回
			String text=testfield.getText();
			return text;	
		}
	 
	
}

运行结果如下:
在这里插入图片描述
在这里插入图片描述
代码仅供参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值