📄 notoedit.txt
字号:
用Jbuilder写的记事本
package texteditor;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.event.*;
import java.io.*;
import javax.swing.undo.*;
import java.awt.datatransfer.*;
import com.borland.dbswing.*;
/**
* <p>Title: 文本编辑器</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: bjut</p>
* @author haofeng
* @version 1.0
*/
public class TextEditorFrame extends JFrame {
Document document1;
JFileChooser jFileChooser1 = new JFileChooser();
final UndoManager edit= new UndoManager();
Clipboard sysClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();
boolean saveNeeded;
String currentFileName;
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JToolBar jToolBar = new JToolBar();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
ImageIcon image1;
ImageIcon image2;
ImageIcon image3;
JLabel statusBar = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();
JMenuItem jMenuFileExit = new JMenuItem();
JMenuItem jMenuFileSaveas = new JMenuItem();
JMenuItem jMenuFileSave = new JMenuItem();
JMenuItem jMenuFileOpen = new JMenuItem();
JMenuItem jMenuFileNew = new JMenuItem();
JMenu jMenuEdit = new JMenu();
JMenuItem jMenuEditBColor = new JMenuItem();
JMenuItem jMenuEditColor = new JMenuItem();
JMenuItem jMenuEditPaste = new JMenuItem();
JMenuItem jMenuEditCut = new JMenuItem();
JMenuItem jMenuEditCopy = new JMenuItem();
JMenuItem jMenuEditSelAll = new JMenuItem();
JMenuItem jMenuEditRedo = new JMenuItem();
JMenuItem jMenuEditUndo = new JMenuItem();
JScrollPane TextScrollPane = new JScrollPane();
JTextArea jTextArea1 = new JTextArea();
//Construct the frame
public TextEditorFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
document1 = jTextArea1.getDocument();
image1 = new ImageIcon(texteditor.TextEditorFrame.class.getResource("openFile.png"));
image2 = new ImageIcon(texteditor.TextEditorFrame.class.getResource("closeFile.png"));
image3 = new ImageIcon(texteditor.TextEditorFrame.class.getResource("help.png"));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("Frame Title");
statusBar.setText(" ");
jMenuFile.setText("File");
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new TextEditorFrame_jMenuHelpAbout_ActionAdapter(this));
jButton1.setIcon(image1);
jButton1.setToolTipText("Open File");
jButton2.setIcon(image2);
jButton2.setToolTipText("Close File");
jButton3.setIcon(image3);
jButton3.setToolTipText("Help");
jMenuFileExit.setText("Exit");
jMenuFileExit.addActionListener(new TextEditorFrame_jMenuFileExit_actionAdapter(this));
jMenuFileNew.setText("New");
jMenuFileNew.addActionListener(new TextEditorFrame_jMenuFileNew_actionAdapter(this));
jMenuFileOpen.setText("Open");
jMenuFileOpen.addActionListener(new TextEditorFrame_jMenuFileOpen_actionAdapter(this));
jMenuFileSave.setText("Save");
jMenuFileSave.addActionListener(new TextEditorFrame_jMenuFileSave_actionAdapter(this));
jMenuFileSaveas.setText("Save As");
jMenuFileSaveas.addActionListener(new TextEditorFrame_jMenuFileSaveas_actionAdapter(this));
jMenuEdit.setText("Edit");
jMenuEdit.addFocusListener(new TextEditorFrame_jMenuEdit_focusAdapter(this));
jMenuEditUndo.setText("Undo");
jMenuEditUndo.addActionListener(new TextEditorFrame_jMenuEditUndo_actionAdapter(this));
jMenuEditRedo.setText("Redo");
jMenuEditRedo.addActionListener(new TextEditorFrame_jMenuEditRedo_actionAdapter(this));
jMenuEditSelAll.setText("Select All");
jMenuEditCopy.setText("Copy");
jMenuEditCopy.addActionListener(new TextEditorFrame_jMenuEditCopy_actionAdapter(this));
jMenuEditCut.setText("Cut");
jMenuEditCut.addActionListener(new TextEditorFrame_jMenuEditCut_actionAdapter(this));
jMenuEditPaste.setText("Paste");
jMenuEditPaste.addActionListener(new TextEditorFrame_jMenuEditPaste_actionAdapter(this));
jMenuEditColor.setText("Foreground Color");
jMenuEditColor.addActionListener(new TextEditorFrame_jMenuEditColor_actionAdapter(this));
jMenuEditBColor.setText("Background Color");
jMenuEditBColor.addActionListener(new TextEditorFrame_jMenuEditBColor_actionAdapter(this));
document1.addDocumentListener(new TextEditorFrame_document1_documentAdapter(this));
document1.addUndoableEditListener(new TextEditorFrame_document1_undoableEditAdapter(this));
jTextArea1.setToolTipText("");
jTextArea1.setText("");
jTextArea1.setLineWrap(true);
jToolBar.add(jButton1);
jToolBar.add(jButton2);
jToolBar.add(jButton3);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuEdit);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
contentPane.add(jToolBar, BorderLayout.NORTH);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(TextScrollPane, BorderLayout.CENTER);
TextScrollPane.getViewport().add(jTextArea1, null);
jMenuFile.add(jMenuFileNew);
jMenuFile.add(jMenuFileOpen);
jMenuFile.add(jMenuFileSave);
jMenuFile.add(jMenuFileSaveas);
jMenuFile.addSeparator();
jMenuFile.add(jMenuFileExit);
jMenuEdit.add(jMenuEditUndo);
jMenuEdit.add(jMenuEditRedo);
jMenuEdit.addSeparator();
jMenuEdit.add(jMenuEditSelAll);
jMenuEdit.add(jMenuEditCopy);
jMenuEdit.add(jMenuEditCut);
jMenuEdit.add(jMenuEditPaste);
jMenuEdit.addSeparator();
jMenuEdit.add(jMenuEditColor);
jMenuEdit.add(jMenuEditBColor);
}
//File | Exit action performed
void openFile(){
if (!okToAbandon()) {
return;
}
if(JFileChooser.APPROVE_OPTION== jFileChooser1.showOpenDialog(this)) {
openSelectedFile(jFileChooser1.getSelectedFile().getPath());
}
this.repaint();
}
void openSelectedFile(String fileName){
try{
File file = new File(fileName);
int fileSize = (int)file.length();
int charsReaded = 0;
FileReader in = new FileReader(file);
char[] data = new char[fileSize];
while(in.ready()) {
charsReaded += in.read(data, charsReaded, fileSize - charsReaded);
}
in.close();
jTextArea1.setText(new String(data, 0, charsReaded));
this.currentFileName = fileName;
this.saveNeeded = false;
statusBar.setText("打开 "+fileName);
updateTitle();
}
catch (IOException e){
statusBar.setText("Error opening "+fileName);
}
}
boolean okToAbandon(){
if(!saveNeeded){
return true;
}
int value=JOptionPane.showConfirmDialog(this,"保存文件吗?","文本编辑",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 updateTitle(){
String title;
if (currentFileName == null){
title="未命名文件";
}else{
title=currentFileName;
}
if (saveNeeded==true){
title="*"+title;
}
title="文本编辑器-"+title;
this.setTitle(title);
}
boolean saveFile(){
if (currentFileName == null){
return saveAsFile();
}
try{
File file = new File (currentFileName);
FileWriter out = new FileWriter(file);
String text = jTextArea1.getText();
out.write(text);
out.close();
this.saveNeeded = false;
updateTitle();
return true;
}
catch (IOException e){
statusBar.setText("存储"+currentFileName+"出错") ;
}
return false;
}
boolean saveAsFile(){
this.repaint() ;
if (JFileChooser.APPROVE_OPTION == jFileChooser1.showSaveDialog(this)) {
currentFileName = jFileChooser1.getSelectedFile() .getPath() ;
this.repaint() ;
return saveFile();
}else{
this.repaint() ;
return false;
}
}
public void jMenuFileExit_actionPerformed(ActionEvent e) {
if(!okToAbandon()){
return;
}
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
TextEditorFrame_AboutBox dlg = new TextEditorFrame_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.pack();
dlg.show();
}
//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 jMenuFileNew_actionPerformed(ActionEvent e) {
if(okToAbandon()){
jTextArea1.setText("");
currentFileName = null;
saveNeeded = false;
updateTitle();
}
}
void jMenuFileOpen_actionPerformed(ActionEvent e) {
openFile();
}
void jMenuFileSave_actionPerformed(ActionEvent e) {
saveFile();
}
void jMenuFileSaveas_actionPerformed(ActionEvent e) {
saveAsFile();
}
void jMenuEditCopy_actionPerformed(ActionEvent e) {
String selText=jTextArea1.getSelectedText() ;
if(selText !=null){
StringSelection selection=new StringSelection(selText);
sysClipboard.setContents(selection,null) ;
}
}
void jMenuEditCut_actionPerformed(ActionEvent e) {
String selText=jTextArea1.getSelectedText() ;
if(selText !=null){
StringSelection selection=new StringSelection(selText);
sysClipboard.setContents(selection,null) ;
jTextArea1.replaceSelection("") ;
}
}
void jMenuEditPaste_actionPerformed(ActionEvent e) {
Transferable content=sysClipboard.getContents(this) ;
if(content==null) return;
try{
String text=(String)(content.getTransferData(DataFlavor.stringFlavor ) );
jTextArea1.replaceSelection(text) ;
}catch(Exception ex){
}
}
void jMenuEditColor_actionPerformed(ActionEvent e) {
Color color = JColorChooser.showDialog(this,
"Foreground Color",jTextArea1.getForeground());
if (color != null) {
jTextArea1.setForeground(color);
}
this.repaint();
}
void jMenuEditBColor_actionPerformed(ActionEvent e) {
Color color = JColorChooser.showDialog(this,
"Background Color",jTextArea1.getBackground());
if (color != null) {
jTextArea1.setBackground(color);
}
this.repaint();
}
void document1_changedUpdate(DocumentEvent documentEvent) {
saveNeeded=true;
updateTitle();
}
void document1_insertUpdate(DocumentEvent documentEvent) {
saveNeeded=true;
updateTitle();
}
void document1_removeUpdate(DocumentEvent documentEvent) {
saveNeeded=true;
updateTitle();
}
void document1_undoableEditHappened(UndoableEditEvent e) {
edit.addEdit(e.getEdit());
}
void jMenuEditUndo_actionPerformed(ActionEvent e) {
edit.undo();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -