📄 texteditframe.java
字号:
package textedit;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.swing.text.*;/** * <p>Title: TextEditDemo</p> * <p>Description: This is a TextEdit demo</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: d6-125</p> * @author Liujun * @version 1.0 */public class TextEditFrame extends JFrame { JPanel contentPane; JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenuFile = new JMenu(); JMenuItem jMenuFileExit = new JMenuItem(); JMenu jMenuHelp = new JMenu(); JMenuItem jMenuHelpAbout = new JMenuItem(); JLabel statusBar = new JLabel(); BorderLayout borderLayout1 = new BorderLayout(); JMenuItem jMenuItem1 = new JMenuItem(); JMenuItem jMenuItem2 = new JMenuItem(); JMenuItem jMenuItem3 = new JMenuItem(); JMenuItem jMenuItem4 = new JMenuItem(); JFileChooser jFileChooser1 = new JFileChooser(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); String currFileName = null; // 需要完整路径的文件名,null 表示新文件或无文件名。 boolean dirty = false;//表示文本是否被修改过。 //Construct the frame public TextEditFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(TextEditFrame.class.getResource("[Your Icon]"))); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("Text Edit Frame Demo"); statusBar.setText(" "); jMenuFile.setText("File"); jMenuFileExit.setText("Exit"); jMenuFileExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jMenuFileExit_actionPerformed(e); } }); jMenuHelp.setText("Help"); jMenuHelpAbout.setIcon(new ImageIcon(new java.net.URL("file:///L:/jb6exam/TextEdit/TextEdit/src/image/help.gif"))); jMenuHelpAbout.setText("About"); jMenuHelpAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jMenuHelpAbout_actionPerformed(e); } }); jMenuItem1.setIcon(new ImageIcon(new java.net.URL("file:///L:/jb6exam/TextEdit/TextEdit/src/image/NewFile.GIF"))); jMenuItem1.setText("New"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuItem1_actionPerformed(e); } }); jMenuItem2.setIcon(new ImageIcon(new java.net.URL("file:///L:/jb6exam/TextEdit/TextEdit/src/image/openFile.gif"))); jMenuItem2.setText("Open"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuItem2_actionPerformed(e); } }); jMenuItem3.setIcon(new ImageIcon(new java.net.URL("file:///L:/jb6exam/TextEdit/TextEdit/src/image/closeFile.gif"))); jMenuItem3.setText("Save"); jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuItem3_actionPerformed(e); } }); jMenuItem4.setIcon(new ImageIcon(new java.net.URL("file:///L:/jb6exam/TextEdit/TextEdit/src/image/closeFile.gif"))); jMenuItem4.setText("Save As"); jMenuItem4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuItem4_actionPerformed(e); } }); jMenuFile.add(jMenuItem1); jMenuFile.add(jMenuItem2); jMenuFile.add(jMenuItem3); jMenuFile.add(jMenuItem4); jMenuFile.addSeparator(); jMenuFile.add(jMenuFileExit); jMenuHelp.add(jMenuHelpAbout); jMenuBar1.add(jMenuFile); jMenuBar1.add(jMenuHelp); this.setJMenuBar(jMenuBar1); contentPane.add(statusBar, BorderLayout.SOUTH); contentPane.add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(jTextArea1, null); } //File | Exit action performed public void jMenuFileExit_actionPerformed(ActionEvent e) { System.exit(0); } //Help | About action performed public void jMenuHelpAbout_actionPerformed(ActionEvent e) { TextEditFrame_AboutBox dlg = new TextEditFrame_AboutBox(this); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(true); dlg.show(); } void openFile(String fileName) { //打开文件,从文件中读取文本到文本框同时向状态栏报告状态信息. try { File file = new File(fileName); int size = (int)file.length(); int chars_read = 0;//设置文件读指针 FileReader in = new FileReader(file); char[] data = new char[size]; while(in.ready()) {//读文件数据 chars_read += in.read(data, chars_read, size - chars_read); } in.close();//关闭文件 jTextArea1.setText(new String(data, 0, chars_read)); this.currFileName = fileName; this.dirty = false; statusBar.setText("打开了文件:" + fileName); updateCaption(); } catch (IOException e) { statusBar.setText("文件打开错误: " + fileName); } } void fileOpen() { if (!okToAbandon()) {//如果上一个文件被修改过了,则询问用户。 return; } if (JFileChooser.APPROVE_OPTION == jFileChooser1.showOpenDialog(this)) { openFile(jFileChooser1.getSelectedFile().getPath());//打开文件 } this.repaint(); } boolean saveFile() { //保存文件 if (currFileName == null) {//如果文件名为空,提示给出文件名 return saveAsFile(); } try { File file = new File (currFileName); FileWriter out = new FileWriter(file); String text = jTextArea1.getText(); out.write(text);//写文件 out.close();//关闭文件 this.dirty = false;//文件已保存 statusBar.setText("Saved to " + currFileName); updateCaption();//修改标题栏 return true; } catch (IOException e) { statusBar.setText("Error saving " + currFileName); } return false; } boolean saveAsFile() { this.repaint(); if (JFileChooser.APPROVE_OPTION == jFileChooser1.showSaveDialog(this)) { currFileName = jFileChooser1.getSelectedFile().getPath(); this.repaint(); return saveFile(); } else { this.repaint(); return false; } } boolean okToAbandon() { // 检查文件是否被修改过,显示"保存? yes/no/cancel"信息,让用户决定是否保存。 if (!dirty) { return true; } int value = JOptionPane.showConfirmDialog(this, "保存修改?", "Text Edit", JOptionPane.YES_NO_CANCEL_OPTION) ; switch (value) { case JOptionPane.YES_OPTION: // 保存修改后的文件 return saveFile(); case JOptionPane.NO_OPTION: // 取消保存修改过的文件 return true; case JOptionPane.CANCEL_OPTION: default: // 取消操作 return false; } } void updateCaption() { //更新标题显示文件名和更改信息标志。 String caption; if (currFileName == null) { // 无文件名则使用"Untitled"。 caption = "Untitled"; } else { caption = currFileName; } // 添加更改信息标志 "*"。 if (dirty) { caption = "* " + caption; } caption = "Text Editor - " + caption; this.setTitle(caption); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { jMenuFileExit_actionPerformed(null); } } void jMenuItem1_actionPerformed(ActionEvent e) { // Handle the File|New menu item. if (okToAbandon()) { // 清空TextArea组件内容 jTextArea1.setText(""); // 清空文件名和更改信息标志 currFileName = null; dirty = false; updateCaption(); } } void jMenuItem2_actionPerformed(ActionEvent e) { //Handle the File|Open menu item. fileOpen(); } void jMenuItem3_actionPerformed(ActionEvent e) { //Handle the File|Save menu item. saveFile(); } void jMenuItem4_actionPerformed(ActionEvent e) { //Handle the File|Save As menu item. saveAsFile(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -