Java实现记事本|IO流/GUI
发布时间:2020-12-15 07:18:49 所属栏目:Java 来源:网络整理
导读:Java实现记事本 题目 利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上; 允许对文字内容进行编辑,并可以保存到文件。 代码 class notPadcontainer{ public Boolean visible = false; //组件定义成属性 public JFrame notPadFram
Java实现记事本题目利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上; 代码class notPadcontainer{ public Boolean visible = false; //组件定义成属性 public JFrame notPadFrame; public JMenuBar notPadMenuBar; public JMenu firMenu; public JMenu secMenu; public JMenu thirMenu; public JMenu fourMenu; public JMenuItem buildItem; public JMenuItem openItem; public JMenuItem reserveItem; public JMenuItem paperSetItem; public JMenuItem clearItem; public JMenuItem aboutItem; public JMenuItem fontItem20; public JMenuItem fontItem40; public JTextArea textArea; public JScrollPane textScrollPane; /* * 无参构造函数 * 创建组件 初始化组件 */ notPadcontainer(){ //窗体Frame this.notPadFrame = new JFrame("notePad by fishers"); //设置窗体 名字为notePad this.notPadFrame.setLayout(new BorderLayout()); //边界布局方式 this.notPadFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); //设置关闭框 this.notPadFrame.setSize(500,500); //设置窗口大小 //菜单组件 this.notPadMenuBar = new JMenuBar(); this.firMenu = new JMenu("文件"); this.thirMenu = new JMenu("字体"); this.secMenu = new JMenu("编辑"); this.fourMenu = new JMenu("帮助"); //create JMenuItem for the First menu this.buildItem = new JMenuItem("新建"); this.openItem = new JMenuItem("打开"); this.reserveItem = new JMenuItem("保存"); this.paperSetItem = new JMenuItem("页面设置"); //create JMenuItem for the sec thir four menu this.clearItem = new JMenuItem("清空"); this.aboutItem = new JMenuItem("关于"); this.fontItem20 = new JMenuItem("字体20号"); this.fontItem40 = new JMenuItem("字体40号"); //文本组件 this.textArea = new JTextArea(); this.textScrollPane = new JScrollPane(textArea); textArea.setFont(new Font("宋体",Font.PLAIN,20)); //默认20号字体 ItemAdd(); runListener(); } //添加组件 public void ItemAdd(){ //添加JMenu到JMenuBar notPadMenuBar.add(firMenu); notPadMenuBar.add(secMenu); notPadMenuBar.add(thirMenu); notPadMenuBar.add(fourMenu); //添加JMenuItem到第一个菜单 firMenu.add(buildItem); firMenu.add(openItem); firMenu.add(reserveItem); firMenu.add(paperSetItem); secMenu.add(clearItem); thirMenu.add(fontItem20); thirMenu.add(fontItem40); fourMenu.add(aboutItem); //notPadFrame中添加各个组件 this.notPadFrame.setJMenuBar(notPadMenuBar); this.notPadFrame.add(textScrollPane,BorderLayout.CENTER); } /* * 事件监听代码部分 */ public void runListener() { //新建文件 = 清空。。 buildItem.addActionListener( e -> { textArea.setText(""); }); //打开文件 openItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //设置弹出框 FileDialog FileDialog saveFiledialog = new FileDialog(notPadFrame,"打开文件",FileDialog.LOAD); saveFiledialog.setVisible(true); String fileDir = saveFiledialog.getDirectory(); //拿到目录 String fileName = saveFiledialog.getFile(); //拿到文件名 // System.out.println(fileDir); // System.out.println(fileName); File openFile = new File(fileDir,fileName); //使用File类创建新文件对象 try { FileReader freader = new FileReader(openFile); //字符流 StringBuffer tempBuffer = new StringBuffer();//StringBuffer可变 int len = 0; //下面使用read方法读取 while((len = freader.read()) != -1) { tempBuffer.append((char)len); //append方法加入StringBuffer } String openString = new String(tempBuffer.toString()); textArea.setText(openString); freader.close();//关闭流 } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); //保存文件 reserveItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub FileDialog saveFiledialog = new FileDialog(notPadFrame,"保存文件",FileDialog.SAVE);//父级frame 标题 mode saveFiledialog.setVisible(true); String fileDir = saveFiledialog.getDirectory(); String fileName = saveFiledialog.getFile(); System.out.println(fileDir); System.out.println(fileName); String ContentString = textArea.getText(); File saveFile = new File(fileDir,fileName); try { FileWriter fWriter = new FileWriter(saveFile); //使用字符流写文件 fWriter.write(ContentString); //写文件 fWriter.close(); //关闭流 }catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); //清空文件 clearItem.addActionListener( e -> { textArea.setText(""); }); //监听关于 aboutItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFrame aboutFrame = new JFrame("关于"); //新建窗口 aboutFrame.setLayout(new BorderLayout()); aboutFrame.setSize(300,115); aboutFrame.setDefaultCloSEOperation(JFrame.HIDE_ON_CLOSE);//设置隐藏窗口 JPanel panel = new JPanel(); JLabel label = new JLabel("不会换行、中文乱码的记事本"); JPanel panel2 = new JPanel(); JLabel label2 = new JLabel("Copyright ? 2019 fishers"); panel.add(label); panel2.add(label2); aboutFrame.add(panel,BorderLayout.CENTER); aboutFrame.add(panel2,BorderLayout.PAGE_START); aboutFrame.setVisible(true); } }); fontItem20.addActionListener(e->{ textArea.setFont(new Font("宋体",20)); }); fontItem40.addActionListener(e->{ textArea.setFont(new Font("宋体",40)); }); } //setVisible:设置窗口显示 public void setVisible(Boolean visible) { this.visible = visible; this.notPadFrame.setVisible(this.visible); } } public class notePad { public static void main(String[] args) { notPadcontainer oneNote = new notPadcontainer(); oneNote.setVisible(true); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |