下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.
2、awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.BorderFactory; import
3、javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTextArea; import jav
4、ax.swing.KeyStroke; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; public class JNotePadUI extends JFrame private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs; private JMenuItem menuClose; private JMenu editMenu; private JMenuItem menuCut;
5、private JMenuItem menuCopy; private JMenuItem menuPaste; private JMenuItem menuAbout; private JTextArea textArea; private JLabel stateBar; private JFileChooser fileChooser; private JPopupMenu popUpMenu; public JNotePadUI( super(新建文本文件; setUpUIComponent(; setUpEventListener(; setVisible(true; private
6、 void setUpUIComponent( setSize(640, 480; / 菜单栏 JMenuBar menuBar = new JMenuBar(; / 设置文件菜单 JMenu fileMenu = new JMenu(文件; menuOpen = new JMenuItem(打开; / 快捷键设置 menuOpen.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_O, InputEvent.CTRL_MASK; menuSave = new JMenuItem(保存; menuSave.setAccelerator( K
7、eyStroke.getKeyStroke( KeyEvent.VK_S, InputEvent.CTRL_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(me
8、nuSaveAs; fileMenu.addSeparator(; / 分隔线 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(KeyEven
9、t.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; / 设置关于菜单 JMenu aboutMenu = new JMenu(关于; menuAbout = new JMenuItem(关于JNotePad; aboutM
10、enu.add(menuAbout; menuBar.add(fileMenu; menuBar.add(editMenu; menuBar.add(aboutMenu; setJMenuBar(menuBar; / 文字编辑区域 textArea = new JTextArea(; textArea.setFont(new Font(宋体, Font.PLAIN, 16; textArea.setLineWrap(true; JScrollPane panel = new JScrollPane(textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR
11、_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER; Container contentPane = getContentPane(; contentPane.add(panel, BorderLayout.CENTER; / 状态栏 stateBar = new JLabel(未修改; stateBar.setHorizontalAlignment(SwingConstants.LEFT; stateBar.setBorder( BorderFactory.createEtchedBorder(; contentPane.ad
12、d(stateBar, BorderLayout.SOUTH; popUpMenu = editMenu.getPopupMenu(; fileChooser = new JFileChooser(; private void setUpEventListener( / 按下窗口关闭钮事件处理 addWindowListener( new WindowAdapter( public void windowClosing(WindowEvent e closeFile(; ; / 菜单 - 打开 menuOpen.addActionListener( new ActionListener( pu
13、blic void actionPerformed(ActionEvent e openFile(; ; / 菜单 - 保存 menuSave.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e saveFile(; ; / 菜单 - 另存为 menuSaveAs.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e saveFileAs(; ; / 菜单 - 关闭文件 menu
14、Close.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e closeFile(; ; / 菜单 - 剪切 menuCut.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e cut(; ; / 菜单 - 复制 menuCopy.addActionListener( new ActionListener( public void actionPerformed(Action
15、Event e copy(; ; / 菜单 - 粘贴 menuPaste.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e paste(; ; / 菜单 - 关于 menuAbout.addActionListener( new ActionListener( public void actionPerformed(ActionEvent e / 显示对话框 JOptionPane.showOptionDialog(null, 程序名称:n JNotePad n + 程序设计:n n
16、 + 简介:n 一个简单的文字编辑器n + 可作为验收Java的实现对象n + 欢迎网友下载研究交流nn + /, 关于JNotePad, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null; ; / 编辑区键盘事件 textArea.addKeyListener( new KeyAdapter( public void keyTyped(KeyEvent e processTextArea(; ; / 编辑区鼠标事件 textArea.addMouseListener( new Mouse
17、Adapter( public void mouseReleased(MouseEvent e if(e.getButton( = MouseEvent.BUTTON3 popUpMenu.show(editMenu, e.getX(, e.getY(; public void mouseClicked(MouseEvent e if(e.getButton( = MouseEvent.BUTTON1 popUpMenu.setVisible(false; ; private void openFile( if(isCurrentFileSaved( / 文件是否为保存状态 open(; /
18、打开 else / 显示对话框 int option = JOptionPane.showConfirmDialog( null, 文件已修改,是否保存?, 保存文件?, JOptionPane.YES_NO_OPTION, JOptionPane.WARNI NG_MESSAGE, null; switch(option / 确认文件保存 case JOptionPane.YES_OPTION: saveFile(; / 保存文件 break; / 放弃文件保存 case JOptionPane.NO_OPTION: open(; break; private boolean isCurre
19、ntFileSaved( if(stateBar.getText(.equals(未修改 return false; else return true; private void open( / fileChooser 是 JFileChooser 的实例 / 显示文件选取的对话框 int option = fileChooser.showDialog(null, null; / 使用者按下确认键 if(option = JFileChooser.APPROVE_OPTION try / 开启选取的文件 BufferedReader buf = new BufferedReader( new
20、FileReader( fileChooser.getSelectedFile(; / 设定文件标题 setTitle(fileChooser.getSelectedFile(.toString(; / 清除前一次文件 textArea.setText(; / 设定状态栏 stateBar.setText(未修改; / 取得系统相依的换行字符 String lineSeparator = System.getProperty(line.separator; / 读取文件并附加至文字编辑区 String text; while(text = buf.readLine( != null textA
21、rea.append(text; textArea.append(lineSeparator; buf.close(; catch(IOException e JOptionPane.showMessageDialog(null, e.toString(, 开启文件失败, JOptionPane.ERROR_MESSAGE; private void saveFile( / 从标题栏取得文件名称 File file = new File(getTitle(; / 若指定的文件不存在 if(!file.exists( / 执行另存为 saveFileAs(; else try / 开启指定的文件
22、 BufferedWriter buf = new BufferedWriter( new FileWriter(file; / 将文字编辑区的文字写入文件 buf.write(textArea.getText(; buf.close(; / 设定状态栏为未修改 stateBar.setText(未修改; catch(IOException e JOptionPane.showMessageDialog(null, e.toString(, 写入文件失败, JOptionPane.ERROR_MESSAGE; private void saveFileAs( / 显示文件对话框 int option = fileChooser.showSaveDialog(null; / 如果确认选取文件 if(option = JFileChooser.APPROVE_OPTION / 取得选择的文件 File file = fileChooser.getSelectedFile(; / 在标题栏上设定文件名称 setTitle(file.toString(; try / 建立文件 file.createNewFile(; / 进行文件保存 saveFile(; cat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海现代化工职业学院《金融衍生工具》2025-2026学年期末试卷
- 无锡太湖学院《西方文化概论》2025-2026学年期末试卷
- 乌兰察布医学高等专科学校《人民调解实务》2025-2026学年期末试卷
- 上海立信会计金融学院《工程结构荷载与可靠度设计原理》2025-2026学年期末试卷
- 秦皇岛工业职业技术学院《学前卫生学》2025-2026学年期末试卷
- 松原职业技术学院《学前教育政策与法规》2025-2026学年期末试卷
- 石家庄医学高等专科学校《西医内科学》2025-2026学年期末试卷
- 上海工会管理职业学院《中国历史文选》2025-2026学年期末试卷
- 山西晋中理工学院《口译》2025-2026学年期末试卷
- 上海海事职业技术学院《经济学基础》2025-2026学年期末试卷
- 数学三年级奥数教案
- 【公开课】平行线++课件+2024-2025学年浙教版数学七年级下册
- 柔性人才引进协议书
- 计算机一级wps考试真题试题及答案
- 大棚建设安全协议书
- 葫芦岛市宏玺盛新能源开发有限公司8.30一般触电事故调查报告
- 拒绝精神内耗心理健康课件
- 硬件产品开发流程
- 2025年安徽新闻出版职业技术学院单招职业技能考试题库汇编
- 南宁市2025届高中毕业班第一次适应性测试(一模)语文试卷(含答案详解)
- 平面设计-江苏省赛技术文件(含样题)
评论
0/150
提交评论