📄 noteframe.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;
import java.io.PrintWriter;
import javax.print.*;
public class NoteFrame extends JFrame
{
public NoteFrame()
{
Title("自家用-记事本");
setSize(780,580);
getContentPane().setLayout(new BorderLayout());
MenuNote();
southPane=new EstateLabel();
openFile=new JFileChooser();
openFile.setCurrentDirectory(new File("."));
openFile.setFont(new Font("宋体",Font.PLAIN,12));
p=new JPanel();
p.setLayout(new BorderLayout());
mainArea=new JTextArea();
mainArea.setFont(new Font("宋体",Font.PLAIN,12));
//mainArea.setLocale(new Locale("CHINESE_GB2312"));
mainArea.setSelectedTextColor(Color.RED);
noteScroll=new JScrollPane(mainArea);
noteScroll.revalidate();
p.add(noteScroll,BorderLayout.CENTER);
p.add(southPane,BorderLayout.SOUTH);
getContentPane().add(p,BorderLayout.CENTER);
}
void Title(String s)
{
setTitle(s);
}
void MenuNote()
{
JMenuBar noteMenu=new JMenuBar();
setJMenuBar(noteMenu);
fileMenu=new JMenu("文件(F)");
fileMenu.setFont(new Font("宋体",Font.PLAIN,12));
fileMenu.setMnemonic(KeyEvent.VK_F);
noteMenu.add(fileMenu);
JMenu editMenu=new JMenu("编辑(E)");
editMenu.setFont(new Font("宋体",Font.PLAIN,12));
editMenu.setMnemonic(KeyEvent.VK_E);
noteMenu.add(editMenu);
JMenu formatMenu=new JMenu("格式(O)");
formatMenu.setFont(new Font("宋体",Font.PLAIN,12));
formatMenu.setMnemonic(KeyEvent.VK_O);
noteMenu.add(formatMenu);
JMenu seeMenu=new JMenu("查看(V)");
seeMenu.setFont(new Font("宋体",Font.PLAIN,12));
seeMenu.setMnemonic(KeyEvent.VK_V);
noteMenu.add(seeMenu);
JMenu helpMenu=new JMenu("帮助(H)");
helpMenu.setFont(new Font("宋体",Font.PLAIN,12));
helpMenu.setMnemonic(KeyEvent.VK_H);
noteMenu.add(helpMenu);
JMenuItem newItem=new JMenuItem("新建(N)");
newItem.setFont(new Font("宋体",Font.PLAIN,12));
newItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Title("自家用-记事本");
mainArea.setText("");
}
});
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
JMenuItem openItem=new JMenuItem("打开(O)... ");
openItem.setFont(new Font("宋体",Font.PLAIN,12));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openChooser=openFile.showOpenDialog(NoteFrame.this);
if(openChooser==JFileChooser.APPROVE_OPTION)
{
oldFile=openFile.getSelectedFile();
}
else
{
oldFile=null;
}
excessFile=null;
if(oldFile != null)
{
mainArea.setText("");
try
{
excessFile=new FileInputStream(oldFile);
readerFileInPut=new InputStreamReader(excessFile);
readerFile=new BufferedReader(readerFileInPut);
}catch(Exception ee)
{
return;
}
Title(oldFile.getName()+"-记事本");
int readString;
try
{
while((readString=readerFile.read()) != -1)
{
mainArea.append(String.valueOf((char)readString));
}
}catch(Exception ee)
{
return;
}
}
}
});
JMenuItem saveItem=new JMenuItem("保存(S)");
saveItem.setFont(new Font("宋体",Font.PLAIN,12));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(getTitle().equals("自家用-记事本"))
{
openFile.showSaveDialog(NoteFrame.this);
File filesa=openFile.getSelectedFile();
FileOutputStream outputfile=null;
try{
// if(filesa.getName().indexOf(".txt")==0){
outputfile=new FileOutputStream(filesa+".txt");
// }else{
// outputfile=new FileOutputStream(filesa);
// }
outputfile.write(mainArea.getText().getBytes());
outputfile.close();
}
catch(Exception ee)
{
ee.printStackTrace();
}
}else{
//openFile.showSaveDialog(NoteFrame.this);
File filesa=openFile.getSelectedFile();
FileOutputStream outputfile=null;
try{
if(filesa.getName().indexOf(".txt")==0){
outputfile=new FileOutputStream(filesa+".txt");
}else{
outputfile=new FileOutputStream(filesa);
}
outputfile.write(mainArea.getText().getBytes());
outputfile.close();
}
catch(Exception ee)
{
ee.printStackTrace();
}
}
}
});
JMenuItem saveAsItem=new JMenuItem("另存为(A)...");
saveAsItem.setFont(new Font("宋体",Font.PLAIN,12));
saveAsItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openFile.showSaveDialog(NoteFrame.this);
File filesa=openFile.getSelectedFile();
FileOutputStream outputfile=null;
try{
if(filesa.getName().indexOf(".txt")==0){
outputfile=new FileOutputStream(filesa+".txt");
}else{
outputfile=new FileOutputStream(filesa);
}
outputfile.write(mainArea.getText().getBytes());
outputfile.close();
}
catch(Exception ee)
{
ee.printStackTrace();
}
}
});
JMenuItem pageSetItem=new JMenuItem("页面设置(U)...");
pageSetItem.setFont(new Font("宋体",Font.PLAIN,12));
JMenuItem printerItem=new JMenuItem("打印(P)...");
printerItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
printerItem.setFont(new Font("宋体",Font.PLAIN,12));
printerItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
JMenuItem exitItem=new JMenuItem("退出(X)");
exitItem.setFont(new Font("宋体",Font.PLAIN,12));
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
fileMenu.addSeparator();
fileMenu.add(pageSetItem);
fileMenu.add(printerItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
JMenuItem quashItem=new JMenuItem("撤消(U)");
quashItem.setFont(new Font("宋体",Font.PLAIN,12));
quashItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
JMenuItem cutItem=new JMenuItem("剪切(T)");
cutItem.setFont(new Font("宋体",Font.PLAIN,12));
cutItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mainArea.cut();
}
});
cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
JMenuItem copyItem=new JMenuItem("复制(C)");
copyItem.setFont(new Font("宋体",Font.PLAIN,12));
copyItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mainArea.copy();
}
});
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
JMenuItem pasteItem=new JMenuItem("粘贴(P)");
pasteItem.setFont(new Font("宋体",Font.PLAIN,12));
pasteItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mainArea.paste();
}
});
pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
JMenuItem delItem=new JMenuItem("删除(L) Del");
delItem.setFont(new Font("宋体",Font.PLAIN,12));
delItem.setMnemonic(KeyEvent.VK_DELETE);
delItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mainArea.replaceSelection("");
}
});
JMenuItem lookUpItem=new JMenuItem("查找(F)...");
lookUpItem.setFont(new Font("宋体",Font.PLAIN,12));
lookUpItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
lookup=new LookUp(NoteFrame.this);
lookup.setVisible(true);
}
});
lookUpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
JMenuItem lookUpNextItem=new JMenuItem("查找下一个(N) F3");
lookUpNextItem.setFont(new Font("宋体",Font.PLAIN,12));
lookUpNextItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
lookup=new LookUp(NoteFrame.this);
lookup.setVisible(true);
}
});
JMenuItem rePlaceItem=new JMenuItem("替换(R)...");
rePlaceItem.setFont(new Font("宋体",Font.PLAIN,12));
rePlaceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
rePlaceItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
replace=new Replace(NoteFrame.this);
replace.setVisible(true);
}
});
JMenuItem goToItem=new JMenuItem("转到(G)...");
goToItem.setFont(new Font("宋体",Font.PLAIN,12));
goToItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
JMenuItem allItem=new JMenuItem("全选(A)");
allItem.setFont(new Font("宋体",Font.PLAIN,12));
allItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mainArea.selectAll();
}
});
allItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
JMenuItem timeItem=new JMenuItem("时间/日期(D) F5");
timeItem.setFont(new Font("宋体",Font.PLAIN,12));
editMenu.add(quashItem);
editMenu.addSeparator();
editMenu.add(cutItem);
editMenu.add(copyItem);
editMenu.add(pasteItem);
editMenu.add(delItem);
editMenu.addSeparator();
editMenu.add(lookUpItem);
editMenu.add(lookUpNextItem);
editMenu.add(rePlaceItem);
editMenu.add(goToItem);
editMenu.addSeparator();
editMenu.add(allItem);
editMenu.add(timeItem);
autoLineItem=new JCheckBoxMenuItem("自动换行(W)");
autoLineItem.setFont(new Font("宋体",Font.PLAIN,12));
autoLineItem.addActionListener(new AutoLineAction());
JMenuItem fontItem=new JMenuItem("字体(F)");
fontItem.setFont(new Font("宋体",Font.PLAIN,12));
fontItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -