版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上JAVA程序设计题: 文本编辑器设计 【问题描述】 实现类似Windows操作系统“记事本”的功能。它是一个简单的文本文档编辑器,可以创建、查看或编辑文本文件。【实验目的】要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件处理机制,会查看API documentation完成设计任务,熟练文件流的操作。【基本功能】设计一个文本编辑器,通过菜单组件可以创建、查看或编辑文本文件。增加对文件的存贮、剪切和黏贴等功能功能的其他扩展package com.huangyilun.work;import java.awt.*;import jav
2、a.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import javax.swing.*;public class Notice_B extends JFrame public static void main(String args) new Notice_B();public Notice_B() super("新建文本文件");setUpUIComponent();setUpEventListener();setVisible(true
3、);this.showForm();private void showForm()/侦听窗口关闭操作setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose(); System.exit(0); );private void setUpUIComponent() setSize(640, 480);/ 菜单栏JMenuBar menuBar = new JMenuBar(
4、);/ 设置文件菜单JMenu fileMenu = new JMenu("文件");menuOpen = new JMenuItem("打开");/ 快捷键设置menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);menuSave = new JMenuItem("保存");menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTR
5、L_MASK);menuSaveAs = new JMenuItem("另存为");menuClose = new JMenuItem("关闭");menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK);fileMenu.add(menuOpen);fileMenu.addSeparator(); / 分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparator
6、(); / 分隔线fileMenu.add(menuClose);/ 设置编辑菜单JMenu editMenu = new JMenu("编辑");menuCut = new JMenuItem("剪切");menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK);menuCopy = new JMenuItem("复制");menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEve
7、nt.VK_C,InputEvent.CTRL_MASK);menuPaste = new JMenuItem("粘贴");menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK);editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);menuBar.add(fileMenu);menuBar.add(editMenu);setJMenuBar(menuBar);/ 文字编辑区域te
8、xtArea = new JTextArea();textArea.setFont(new Font("宋体", Font.PLAIN, 16);textArea.setLineWrap(true);JScrollPane panel = new JScrollPane(textArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);Container contentPane = getContentPane();content
9、Pane.add(panel, BorderLayout.CENTER);/ 状态栏stateBar = new JLabel("未修改");stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder();contentPane.add(stateBar, BorderLayout.SOUTH);popUpMenu = editMenu.getPopupMenu();private void setUpEventListene
10、r() / 按下窗口关闭钮事件处理addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) closeFile(););/ 菜单 - 打开menuOpen.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) openFile(););/ 菜单 - 保存menuSave.addActionListener(new ActionListener() public void actionPe
11、rformed(ActionEvent e) saveFile(););/ 菜单 - 另存为menuSaveAs.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) saveFileAs(););/ 菜单 - 关闭文件menuClose.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) closeFile(););/ 菜单 - 剪切menuCut.addActionLis
12、tener(new ActionListener() public void actionPerformed(ActionEvent e) cut(););/ 菜单 - 复制menuCopy.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) copy(););/ 菜单 - 粘贴menuPaste.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) paste(););/
13、编辑区键盘事件textArea.addKeyListener(new KeyAdapter() public void keyTyped(KeyEvent e) processTextArea(););/ 编辑区鼠标事件textArea.addMouseListener(new MouseAdapter() public void mouseReleased(MouseEvent e) if (e.getButton() = MouseEvent.BUTTON3)popUpMenu.show(editMenu, e.getX(), e.getY();public void mouseClick
14、ed(MouseEvent e) if (e.getButton() = MouseEvent.BUTTON1)popUpMenu.setVisible(false););private void openFile() if (isCurrentFileSaved() / 文件是否为保存状态open(); / 打开 else / 显示对话框int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane
15、.WARNING_MESSAGE, null);switch (option) / 确认文件保存case JOptionPane.YES_OPTION:saveFile(); / 保存文件break;/ 放弃文件保存case JOptionPane.NO_OPTION:open();break;private boolean isCurrentFileSaved() if (stateBar.getText().equals("未修改") return true; else return false;private void open() JFileChooser choo
16、ser = new JFileChooser(); chooser.showOpenDialog(this); File file = chooser.getSelectedFile(); currFile = file; String str = "" try FileInputStream fileinput = new FileInputStream(file.getAbsolutePath(); int x = fileinput.available(); byte b = new bytex; fileinput.read(b); str = new String
17、(b); catch(Exception e) e.printStackTrace(); if (file != null) this.textArea.setText(str);private void saveFile() String str = this.textArea.getText();if(currFile != null && !currFile.equals("")tryFileWriter out = new FileWriter(currFile);out.write(str);out.close();catch(Exception
18、e)e.printStackTrace();elsesaveFileAs();stateBar.setText("已保存");private void saveFileAs() JFileChooser chooser = new JFileChooser(); chooser.showOpenDialog(this); File file = chooser.getSelectedFile(); currFile = file; String str = this.textArea.getText(); if(currFile != null && !cu
19、rrFile.equals("") try FileWriter out = new FileWriter(currFile); out.write(str); out.close(); catch(Exception e) e.printStackTrace(); stateBar.setText("已保存");private void closeFile() / 是否已保存文件if (isCurrentFileSaved() / 释放窗口资源,而后关闭程序dispose(); else int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) case JOptionPane.YES_OPTION:saveFile();break;case JOptionPane.NO_OPTION:disp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业股权激励制度
- 五维音乐呼吸镇痛法指南2026
- 2025年事业单位招聘考试统计类试题(2025年)-统计咨询与数据挖掘在商业中的试卷及答案
- 【八下BS数学】安徽宿州市泗县2025-2026学年度第二学期八年级期中质量检测数学试卷
- 【7数期中】安徽省宿州市第十一中学集团2025-2026学年七年级下学期期中数学试卷
- 2026年区块链技术合作合同协议
- 养老助洁上门服务合同
- 2026农业经济区域粮食作物发展种植养殖行业现状分析要素产业投资评估规划研究展望报告
- 2026农业种植企业生长周期管控方案分析评估报告
- 2026农业植保专用剂行业供应链供需平衡现状分析及投资定位
- (高清版)DB64∕T 2146-2025 《工矿企业全员安全生产责任制建设指南》
- 浙江省初中名校发展共同体2025年3月中考一模英语试题(含答案)
- 采棉机培训课件
- 2025年湖北省中考物理+化学合卷试题(含答案及解析)
- 新疆康平纳智能染色有限公司筒子纱智能染色工厂项目环境影响报告书
- 胖东来后勤管理制度
- 代谢性疾病教学课件
- 藻酸盐调拌试题及答案
- 清真食品管理条例
- 物料提升机拆除方案
- 自然辩证法知到课后答案智慧树章节测试答案2025年春浙江大学
评论
0/150
提交评论