Java记事本和界面

代码:(未完成,可初步使用)
package proe;

import java.awt.*;
import javax.swing.*;
/**
 *<p>Title: 程序编辑器</p>
 *<p>Description: 增强的文本编辑程序</p>
 *<p>Copyright: Copyright (c) 2005</p>
 *<p>Company: </p>
 *@author 红色彼岸
 *@version 0.1
 */

public class ProE{
    //定义编辑器的窗体
    private ProEFrame proEWindow;
    //定义编辑器程序本身
    private static ProE proEApp;

    /**
     *应用程序的开始点。
     *@param args String[]
     */
    public static void main(String[] args) {
     proEApp = new ProE();
 proEApp.init();
    }
    private void init() {
 //初始化窗体
 proEWindow = new ProEFrame("程序编辑器");
 Toolkit toolkit = proEWindow.getToolkit();
 Dimension screenSize = toolkit.getScreenSize();
 proEWindow.setBounds(0, 0, (int)screenSize.getWidth()/2, (int)screenSize.getHeight()/2);
 proEWindow.setVisible(true);
    }
}

====================================================================================
package proe;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;

/**
 *<p>Title: 程序编辑器</p>
 *<p>Description: 增强的文本编辑程序</p>
 *<p>Copyright: Copyright (c) 2005</p>
 *<p>Company: </p>
 *@author 红色彼岸
 *@version 0.1
 */
class ProEFrame extends JFrame{
    private JFileChooser fileChooser = new JFileChooser();

    private JMenuBar menuBar;
    private JMenu file, edit, format, help;
    private JMenuItem newItem, openItem, saveItem, saveAsItem, pageSetItem, printItem, exitItem;
    private JMenuItem undoItem, cutItem, copyItem, pasteItem, deleteItem, findItem, findNextItem, replaceItem, goToLineItem, selectAllItem, timeItem;
    private JMenuItem autoNextLineItem, fontItem;
    private JMenuItem helpItem, aboutItem;
    private JTextArea textArea;
    private JScrollPane scrollPane;
    private final int TAB_SIZE = 4;

    private File fileName;
    private boolean firstSave = true;

    public ProEFrame(String title) {
 //设置窗体的标题栏和默认关闭操作
     super(title);
 setDefaultCloseOperation(DISPOSE_ON_CLOSE);

 //设置菜单栏和菜单的内容
 menuBar = new JMenuBar();
 file  = new JMenu("文件(F)");
 edit  = new JMenu("编辑(E)");
 format = new JMenu("格式(O)");
 help  = new JMenu("帮助(H)");
 setQuickKey(file, 'F');
 setQuickKey(edit, 'E');
 setQuickKey(format, 'O');
 setQuickKey(help, 'H');
 newItem = new JMenuItem("新建(N)");
 openItem = new JMenuItem("打开(O)...");
 saveItem = new JMenuItem("保存(S)");
 saveAsItem = new JMenuItem("另存为...");
 pageSetItem = new JMenuItem("页面设置(U)...");
 printItem = new JMenuItem("打印(P)...");
 exitItem = new JMenuItem("退出");
 setQuickKey(newItem, 'N');
 setQuickKey(openItem, 'O');
 setQuickKey(saveItem, 'S');
 setQuickKey(pageSetItem, 'U');
 setQuickKey(printItem, 'P');

 file.add(newItem);
 file.add(openItem);
 file.add(saveItem);
 file.add(saveAsItem);
 file.addSeparator();
 file.add(pageSetItem);
 file.add(printItem);
 file.addSeparator();
 file.add(exitItem);

 undoItem = new JMenuItem("撤销(Z)");
 cutItem = new JMenuItem("剪切(X)");
 copyItem = new JMenuItem("复制(C)");
 pasteItem = new JMenuItem("粘贴(V)");
 deleteItem = new JMenuItem("删除");
 findItem = new JMenuItem("查找(F)...");
 findNextItem = new JMenuItem("查找下一个");
 replaceItem = new JMenuItem("替换(R)...");
 goToLineItem = new JMenuItem("转到(G)...");
 selectAllItem = new JMenuItem("全选(A)");
 timeItem = new JMenuItem("时间/日期");

 setQuickKey(undoItem, 'Z');
 setQuickKey(cutItem, 'X');
 setQuickKey(copyItem, 'C');
 setQuickKey(pasteItem, 'V');
 setQuickKey(findItem, 'F');
 setQuickKey(replaceItem, 'R');
 setQuickKey(goToLineItem, 'G');
 setQuickKey(selectAllItem, 'A');

 edit.add(undoItem);
 edit.addSeparator();
 edit.add(cutItem);
 edit.add(copyItem);
 edit.add(pasteItem);
 edit.add(deleteItem);
 edit.addSeparator();
 edit.add(findItem);
 edit.add(findNextItem);
 edit.add(replaceItem);
 edit.add(goToLineItem);
 edit.addSeparator();
 edit.add(selectAllItem);
 edit.add(timeItem);

 autoNextLineItem = new JMenuItem("自动换行(W)");
 fontItem = new JMenuItem("字体...");

 setQuickKey(autoNextLineItem, 'W');

 format.add(autoNextLineItem);
 format.add(fontItem);

 helpItem = new JMenuItem("帮助主题(H)");
 aboutItem = new JMenuItem("关于ProE");

 setQuickKey(helpItem, 'H');

 help.add(helpItem);
 help.add(aboutItem);

 menuBar.add(file);
 menuBar.add(edit);
 menuBar.add(format);
 menuBar.add(help);
 setJMenuBar(menuBar);

 textArea = new JTextArea();
 textArea.setTabSize(TAB_SIZE);
 scrollPane = new JScrollPane(textArea);
 this.getContentPane().add(scrollPane, BorderLayout.CENTER);

 //测试用的方法
 MenuItemEventHandler menuItemHandler = new MenuItemEventHandler();
 newItem.addActionListener(menuItemHandler);
 openItem.addActionListener(menuItemHandler);
 saveItem.addActionListener(menuItemHandler);
 saveAsItem.addActionListener(menuItemHandler);
 pageSetItem.addActionListener(menuItemHandler);
 printItem.addActionListener(menuItemHandler);
 exitItem.addActionListener(menuItemHandler);
 undoItem.addActionListener(menuItemHandler);
 cutItem.addActionListener(menuItemHandler);
 copyItem.addActionListener(menuItemHandler);
 pasteItem.addActionListener(menuItemHandler);
 deleteItem.addActionListener(menuItemHandler);
 findItem.addActionListener(menuItemHandler);
 findNextItem.addActionListener(menuItemHandler);
 replaceItem.addActionListener(menuItemHandler);
 goToLineItem.addActionListener(menuItemHandler);
 selectAllItem.addActionListener(menuItemHandler);
 timeItem.addActionListener(menuItemHandler);
 autoNextLineItem.addActionListener(menuItemHandler);
 fontItem.addActionListener(menuItemHandler);
 helpItem.addActionListener(menuItemHandler);
 aboutItem.addActionListener(menuItemHandler);
    }

    //辅助方法:为菜单或者菜单项设定快捷键
    private void setQuickKey(AbstractButton button, char quickKey) {
 String type = button.getClass().getName();
 if(type.endsWith("JMenu"))
  button.setMnemonic(quickKey);
 else if(type.endsWith("JMenuItem")) {
  JMenuItem menuItem = (JMenuItem)button;
  menuItem.setAccelerator(KeyStroke.getKeyStroke(quickKey, InputEvent.CTRL_MASK));
 }
    }

    //内部方法:响应菜单事件
    private void newPerformed() {
 savePerformed();
 textArea.setText("");
    }
    private void openPerformed() {
 BufferedReader input = null;
 String text;
 int ret = fileChooser.showOpenDialog(this);
 if(ret != JFileChooser.APPROVE_OPTION)
    return;
 fileName = fileChooser.getSelectedFile();
 if(fileName.exists() && fileName.canRead()) {
     setTitle("程序编辑器: " + fileName.getName());
     textArea.setText("");
     try{
         input = new BufferedReader(new FileReader(fileName));
         while((text = input.readLine()) != null)
          textArea.append(text + "/n");
  input.close();
     }
     catch(IOException e) {
         JOptionPane.showMessageDialog(this, "文件打开错误,没有打开");
     }
     finally {
  input = null;
     }
 }
    }
    private void savePerformed() {
 PrintWriter output = null;
 if(firstSave == true) {
     saveAsPerformed();
     firstSave = false;
 }
 else {
  try{
      output = new PrintWriter(new FileWriter(fileName));
      output.write(textArea.getText());
  }
  catch(IOException e)
  {
   JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
  }
  finally {
   output.close();
   output = null;
  }
 }
    }
    private void saveAsPerformed() {
 PrintWriter output = null;
 int ret = fileChooser.showSaveDialog(this);
 if(ret != JFileChooser.APPROVE_OPTION)
  return;
 fileName = fileChooser.getSelectedFile();
 setTitle("程序编辑器: " + fileName.getName());
 try{
     output = new PrintWriter(new FileWriter(fileName));
          output.write(textArea.getText());
 }
 catch(IOException e){
  JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
 }
 finally{
     output.close();
     output = null;
 }
    }
    private void pageSetPerformed() {
 System.out.println("显示页面设置对话框");
    }
    private void printPerformed() {
 System.out.println("显示打印对话框");
    }
    private void exitPerformed() {
 savePerformed();
 dispose();
    }
    private void undoPerformed() {
 System.out.println("撤销");
    }
    private void cutPerformed() {
 System.out.println("剪切");
    }
    private void copyPerformed() {
 System.out.println("复制");
    }
    private void pastePerformed() {
 System.out.println("粘贴");
    }
    private void deletePerformed() {
 System.out.println("删除");
    }
    private void findPerformed() {
 System.out.println("查找");
    }
    private void findNextPerformed() {
 System.out.println("查找下一个");
    }
    private void replacePerformed() {
 System.out.println("替换");
    }
    private void goToLinePerformed() {
 System.out.println("转到");
    }
    private void selectAllPerformed() {
 System.out.println("全选");
    }
    private void timePerformed() {
 System.out.println("时间/日期");
    }
    private void autoNextLinePerformed() {
 System.out.println("自动换行");
    }
    private void fontPerformed() {
 System.out.println("字体");
    }
    private void helpPerformed() {
 System.out.println("帮助主题");
    }
    private void aboutPerformed() {
 JOptionPane.showMessageDialog(this, "简陋的编辑器");
    }

   /**
    *<p>Title: </p>
    *<p>Description: 处理菜单出发的事件</p>
    *<p>Copyright: Copyright (c) 2005</p>
    *<p>Company: </p>
    *@author 崔海成
    *@version 0.1
    */
    class MenuItemEventHandler implements ActionListener{
 public void actionPerformed(ActionEvent e) {
     JMenuItem item = (JMenuItem)e.getSource();
     if(item == newItem)
  newPerformed();
     else if(item == openItem)
  openPerformed();
     else if(item == saveItem)
  savePerformed();
     else if(item == saveAsItem)
  saveAsPerformed();
     else if(item == pageSetItem)
  pageSetPerformed();
     else if(item == printItem)
  printPerformed();
     else if(item == exitItem)
  exitPerformed();
     else if(item == undoItem)
  undoPerformed();
     else if(item == cutItem)
  cutPerformed();
     else if(item == copyItem)
  copyPerformed();
     else if(item == pasteItem)
  pastePerformed();
     else if(item == deleteItem)
  deletePerformed();
     else if(item == findItem)
  findPerformed();
     else if(item == findNextItem)
  findNextPerformed();
     else if(item == replaceItem)
  replacePerformed();
     else if(item == goToLineItem)
  goToLinePerformed();
     else if(item == selectAllItem)
  selectAllPerformed();
     else if(item == timeItem)
  timePerformed();
     else if(item == autoNextLineItem)
  autoNextLinePerformed();
     else if(item == fontItem)
  fontPerformed();
     else if(item == helpItem)
  helpPerformed();
     else if(item == aboutItem)
  aboutPerformed();
 }
    }
}
效果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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.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 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 javax.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; 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 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( KeyStroke.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(menuSaveAs); 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(KeyEvent.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"); aboutMenu.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_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.add(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() { public 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(); } } ); // 菜单 - 关闭文件 menuClose.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(ActionEvent 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" + "简介:\n 一个简单的文字编辑器\n" + " 可作为验收Java的实现对象\n" + " 欢迎网友下载研究交流\n\n" + " /", "关于JNotePad", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); } } ); // 编辑区键盘事件 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 mouseClicked(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.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 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 FileReader( fileChooser.getSelectedFile())); // 设定文件标题 setTitle(fileChooser.getSelectedFile().toString()); // 清除前一次文件 textArea.setText(""); // 设定状态栏 stateBar.setText("未修改"); // 取得系统相依的换行字符 String lineSeparator = System.getProperty("line.separator"); // 读取文件并附加至文字编辑区 String text; while((text = buf.readLine()) != null) { textArea.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 { // 开启指定的文件 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(); } catch(IOException e) { JOptionPane.showMessageDialog(null, e.toString(), "无法建立新文件", JOptionPane.ERROR_MESSAGE); } } } 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: dispose(); } } } private void cut() { textArea.cut(); stateBar.setText("已修改"); popUpMenu.setVisible(false); } private void copy() { textArea.copy(); popUpMenu.setVisible(false); } private void paste() { textArea.paste(); stateBar.setText("已修改"); popUpMenu.setVisible(false); } private void processTextArea() { stateBar.setText("已修改"); } public static void main(String[] args) { new JNotePadUI(); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值