⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.java

📁 简单的记事本实现
💻 JAVA
字号:
/**
 * @(#)text.java
 *
 *
 * @author 
 * @version 1.00 2008/12/1
 */


/* 
* Created on 2005-3-22 
* 
* JAVA课程大作业1:编写一个记事本,可以实现记事本的简单功能. 
* Window - Preferences - Java - Code Style - Code Templates 
*/ 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import javax.swing.*; 
class UserInterface extends JFrame{ 
static final long serialVersionUID = -4974434346775996938L; 
// 设置界面 
JFrame frame = new JFrame("记事本"); 

// 设置菜单项目 
JMenuItem 
menuFileNew, menuFileOpen, menuFileSave, menuFileSaveAs, 
menuFilePrint, menuFilePrintSetup, menuFileExit, 
menuEditCut, menuEditCopy, menuEditPaste, menuSelectAll, 
menuEditDeleteSelection, menuEditFind, menuEditReplace, 
menuEditGoTo, menuHelpAbout; 

//设置可选择菜单 
JCheckBoxMenuItem menuViewWordWrap; 

// 设置菜单分类 
JMenu menuFile, menuEdit, menuView, menuHelp; 

// 设置右键菜单项目 
JMenuItem 
RCMenuCut, RCMenuCopy, RCMenuPaste, RCMenuSelectAll; 

// 设置菜单条 
JMenuBar mb = new JMenuBar(); 
JPopupMenu popup = new JPopupMenu(); 

// 设置文本编辑区 
JScrollPane scrollPane; 
JTextArea textArea; 

// 设置监听器 
MyListener ML = new MyListener(); 
PopupListener PL = new PopupListener(); 

// 设置其它系统参数 
boolean isFileSave = false; 
boolean isFileNew = true; 
int receiveReturnPara; 

private void setMenu() { 
// ---------- 设置菜单分类 ---------- 
menuFile = new JMenu("文件(F) ", true); 
menuFile.setMnemonic(KeyEvent.VK_F); 

menuEdit = new JMenu("编辑(E)", true); 
menuEdit.setMnemonic(KeyEvent.VK_E); 

menuView = new JMenu("察看(V)", true); 
menuView.setMnemonic(KeyEvent.VK_V); 

menuHelp = new JMenu("帮助(H)", true); 
menuHelp.setMnemonic(KeyEvent.VK_H); 
// ---------- 菜单分类结束 ---------- 


// 文件 新建菜单 
menuFileNew = new JMenuItem("新建", 'N'); 
menuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 
InputEvent.CTRL_MASK)); 
menuFileNew.addActionListener(ML); 
// 文件 打开菜单 
menuFileOpen = new JMenuItem("打开(O)", 'O'); 
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_O, 
InputEvent.CTRL_MASK)); 
menuFileOpen.addActionListener(ML); 

// 文件 保存菜单 
menuFileSave = new JMenuItem("保存(S)", 'S'); 
menuFileSave.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_S, 
InputEvent.CTRL_MASK)); 
menuFileSave.addActionListener(ML); 

// 文件 另存为菜单 
menuFileSaveAs = new JMenuItem("另存为(A)... ", 'A'); 
menuFileSaveAs.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_F12, 0)); 
menuFileSaveAs.addActionListener(ML); 

// 文件 关闭菜单 
menuFileExit = new JMenuItem("关闭(X)", 'X'); 
menuFileExit.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_F4, 
InputEvent.ALT_MASK)); 
menuFileExit.addActionListener(ML); 

// 编辑 剪切菜单 
menuEditCut = new JMenuItem("剪切(T) ", 'T'); 
menuEditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, 
InputEvent.CTRL_MASK)); 
menuEditCut.addActionListener(ML); 

// 编辑 复制菜单 
menuEditCopy = new JMenuItem("复制(C) ", 'C'); 
menuEditCopy.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_C, 
InputEvent.CTRL_MASK)); 
menuEditCopy.addActionListener(ML); 

// 编辑 粘贴菜单 
menuEditPaste = new JMenuItem("粘贴(P) ", 'P'); 
menuEditPaste.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_V, 
InputEvent.CTRL_MASK)); 
menuEditPaste.addActionListener(ML); 

// 编辑 全选菜单 
menuSelectAll = new JMenuItem("全选(A) ", 'A'); 
menuSelectAll.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_A, 
InputEvent.CTRL_MASK)); 
menuSelectAll.addActionListener(ML); 

// 编辑 删除菜单 
menuEditDeleteSelection = new JMenuItem("删除(S) ", 'S'); 
menuEditDeleteSelection.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_DELETE, 0)); 
menuEditDeleteSelection.addActionListener(ML); 

// 编辑 转到菜单 未完成 
/* menuEditGoTo = new JMenuItem("转到(A) ", 'A'); 
menuEditGoTo.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_G, 
InputEvent.CTRL_MASK)); 
menuEditGoTo.addActionListener(ML); 
*/ 

// 视图 自动换行 
menuViewWordWrap = new JCheckBoxMenuItem("自动换行 "); 
menuViewWordWrap.setMnemonic('W'); 
menuViewWordWrap.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_W, 
InputEvent.CTRL_MASK)); 
menuViewWordWrap.setState(false); 
menuViewWordWrap.addActionListener(ML); 

// 帮助 关于 
menuHelpAbout = new JMenuItem("关于(A)... ", 'A'); 
menuHelpAbout.setAccelerator(KeyStroke.getKeyStroke

(KeyEvent.VK_F1, 0)); 
menuHelpAbout.addActionListener(ML); 
} 

private void setRightClickMenu() { 
// 设置右键菜单 
RCMenuCut = new JMenuItem("剪切(T) ", 'T'); 
RCMenuCut.addActionListener(ML); 

RCMenuCopy = new JMenuItem("复制(C) ", 'C'); 
RCMenuCopy.addActionListener(ML); 

RCMenuPaste = new JMenuItem("粘贴(P) ", 'P'); 
RCMenuPaste.addActionListener(ML); 

RCMenuSelectAll = new JMenuItem("全选(S) ", 'S'); 
RCMenuSelectAll.addActionListener(ML); 
} 
private void setUI() { 
frame.getContentPane().setLayout(new BorderLayout()); 
frame.setJMenuBar(mb); 
JPanel p = new JPanel(); 

// 为文件菜单添加项目 
mb.add(menuFile); 
menuFile.add(menuFileNew); 
menuFile.add(menuFileOpen); 
menuFile.add(menuFileSave); 
menuFile.add(menuFileSaveAs); 
menuFile.addSeparator(); // 分割线 
menuFile.add(menuFileExit); 

// 为编辑菜单添加项目 
mb.add(menuEdit); 
menuEdit.add(menuEditCut); 
menuEdit.add(menuEditCopy); 
menuEdit.add(menuEditPaste); 
menuEdit.add(menuSelectAll); 
menuEdit.addSeparator(); 
menuEdit.add(menuEditDeleteSelection); 
// menuEdit.add(menuEditGoTo); 

// 为察看菜单添加项目 
mb.add(menuView); 
menuView.add(menuViewWordWrap); 

// 为帮助菜单添加项目 
mb.add(menuHelp); 
menuHelp.add(menuHelpAbout); 

// 添加右键菜单 
popup.add(RCMenuCut); 
popup.add(RCMenuCopy); 
popup.add(RCMenuPaste); 
popup.add(RCMenuSelectAll); 
// 添加滚动区域 
scrollPane = new JScrollPane(); 
JViewport port = scrollPane.getViewport(); 
textArea = new JTextArea(); 
textArea.setFont(new Font("Fixedsys", Font.PLAIN, 14)); 
port.add(textArea); 

// 添加组件 
frame.add("Center", scrollPane); 

// 添加右键菜单响应 
textArea.addMouseListener(PL); 

// 添加窗口事件 
frame.addWindowListener(new WindowAdapter() { 
public void windowClosing(WindowEvent e) { 
if(!isFileSave) { 
MyActions MA =new MyActions(); 
receiveReturnPara = MA.fileNotSaveMessage(); 
String s = new String(""); 
if (receiveReturnPara == 0){ 
// 如果选择“是”,则调用保存文件方法,然后再关闭。 
try { 
PrintWriter out = new PrintWriter(new BufferedWriter( 
new FileWriter((s =MA.fileSaveAs())))); 
out.print(textArea.getText()); 
out.close(); 
} catch (IOException e1) { 
e1.printStackTrace(); 
} 
isFileSave = true; 
System.exit(0); 
} else if (receiveReturnPara == 1) { 
// 如果选择“否”,则直接关闭,并告知文件尚未保存。 
System.exit(0); 
} 
} else 
System.exit(0); 
} 
}); 

// 设置窗口使可见 
frame.setSize(800,600); 
frame.setVisible(true); 

} 
void startApp() { 
try { 
// 把界面设置成windows界面 
UIManager 
.setLookAndFeel

("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
} catch (Exception e) { 
} 
setMenu(); 
setRightClickMenu(); 
setUI(); 
} 

class PopupListener extends MouseAdapter { 
public void mousePressed(MouseEvent e) { 
maybeShowPopup(e); 
} 
public void mouseReleased(MouseEvent e) { 
maybeShowPopup(e); 
} 
private void maybeShowPopup(MouseEvent e) { 
if(e.isPopupTrigger()) 
popup.show(((JTextArea)e.getComponent()), e.getX(), e.getY()); 
} 
} 

class MyListener implements ActionListener { 
MyListener MA = new MyListener(); 
void saveFile() { 
try { 
PrintWriter out = new PrintWriter(new BufferedWriter( 
new FileWriter(MA.fileSaveAs()))); 
out.print(textArea.getText()); 
out.close(); 
} catch (IOException e1) { 
e1.printStackTrace(); 
} 
isFileSave = true; 
} 
public void actionPerformed(ActionEvent e) { 
if(e.getSource() == menuFileNew) { 
// 如果没有保存,则在新建文件时候询问 
if(!isFileSave) { 
receiveReturnPara = MA.fileNotSaveMessage(); 
if (receiveReturnPara == 0){ 
// 如果选择“是”,则调用保存的方法,新建文件,并且告知文件是尚

textArea.setText(""); 
isFileSave = false; 
} else { 
// 如果选择“否”,则直接新建文件,并告知文件尚未保存。 
textArea.setText(""); 
isFileSave = false; 
} 
} else 
textArea.setText(""); 
} 
else if (e.getSource() == menuFileOpen) { 
// 如果没有保存,则在新建文件时候询问 
if(!isFileSave) { 
receiveReturnPara = MA.fileNotSaveMessage(); 
if (receiveReturnPara == 0){ 
// 如果选择“是”,则调用保存文件方法,然后再调用打开文件方法。 
// 并且告知新开文件是尚未保存的。 

textArea.setText(""); 
textArea.setText(MA.fileOpen()); 
isFileSave = false; 
} else { 
// 如果选择“否”,则直接打开文件,并告知文件尚未保存。 
textArea.setText(""); 
textArea.setText(MA.fileOpen()); 
isFileSave = false; 
} 
} else { 
textArea.setText(""); 
textArea.setText(MA.fileOpen()); 
} 

} 
else if (e.getSource() == menuFileSave) { 
saveFile(); 
} 
else if (e.getSource() == menuFileSaveAs) { 
saveFile(); 
} 
else if (e.getSource() == menuFileExit) { 
if(!isFileSave) { 
receiveReturnPara = MA.fileNotSaveMessage(); 
if (receiveReturnPara == 0){ 
// 如果选择“是”,则调用保存文件方法,然后再关闭。 
saveFile(); 
System.exit(1); 
} else { 
// 如果选择“否”,则直接关闭,并告知文件尚未保存。 
System.exit(1); 
} 
} else 
System.exit(1); 
} 
else if ((e.getSource() == menuEditCut) || (e.getSource() == 

RCMenuCut)) { 
textArea.cut(); 
} 
else if ((e.getSource() == menuEditCopy) || (e.getSource() == 

RCMenuCopy)){ 
textArea.copy(); 
} 
else if ((e.getSource() == menuEditPaste) || (e.getSource() == 

RCMenuPaste)) { 
textArea.paste(); 
} 
else if ((e.getSource() == menuSelectAll) || (e.getSource() == 

RCMenuSelectAll)) { 
textArea.selectAll(); 
} 
else if(e.getSource() == menuViewWordWrap) { 
if (menuViewWordWrap.getState()) { 
textArea.setLineWrap(true); 
} else 
{ 
textArea.setLineWrap(false); 
} 
} 
else if(e.getSource() == menuHelpAbout) 
{ 
JOptionPane.showConfirmDialog(null,"==== 记事本 ====\n",JOptionPane.CLOSED_OPTION ); 
} 
} 
} 
} 
class Notepad { 
public static void main(String[] args) { 
UserInterface Notepad = new UserInterface(); 
Notepad.startApp(); 
} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -