📄 testmain.java
字号:
package gnu.wp;
import javax.swing.*;
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import java.io.*;
import javax.swing.event.*;
import java.util.*;
import java.awt.print.*;
import javax.print.*;
import javax.swing.undo.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.MediaSizeName;
import javax.swing.undo.UndoManager;
import javax.swing.border.TitledBorder;
import java.text.*;
public class testMain{
public static void main(String [] arg){
try{
//设置个性外观
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
}catch(Exception e){
}
new testFrame();
}
}
class testFrame{
public static boolean bool=false;
public static JTextArea jta;
public static JFrame f;
public static UndoManager um;
public static JMenuItem editItem1,editItem2,editItem3,editItem5,editItem6;
//public static boolean bool=true;
public testFrame(){
f = new JFrame();
f.setTitle("无标题 - 记事本");
//创建菜单栏对象
JMenuBar menuBar = new JMenuBar();
//创建菜单对象
JMenu fileJMenu = new JMenu("文件 (F)");
JMenu editJMenu = new JMenu("编辑 (E)");
editJMenu.addMenuListener(new bjEvent());
JMenu formatJMenu = new JMenu("格式 (O)");
JMenu lookJMenu = new JMenu("查看 (V)");
JMenu helpJMenu = new JMenu("帮助 (H)");
//创建多行文本对象
jta = new JTextArea();
um=new UndoManager();
jta.getDocument().addUndoableEditListener(testFrame.um);
//创建子菜单对象
JMenuItem fileItem1 = new JMenuItem("新建(N)");
JMenuItem fileItem2 = new JMenuItem("打开(O)");
JMenuItem fileItem3= new JMenuItem("保存(S)");
JMenuItem fileItem4= new JMenuItem("另存为(A)");
JMenuItem fileItem5= new JMenuItem("页面设置(U)");
JMenuItem fileItem6= new JMenuItem("打印(P)");
JMenuItem fileItem7= new JMenuItem("退出(X)");
//添加菜单列表
fileJMenu.add(fileItem1);
fileJMenu.add(fileItem2);
fileJMenu.add(fileItem3);
fileJMenu.add(fileItem4);
fileJMenu.addSeparator();
fileJMenu.add(fileItem5);
fileJMenu.add(fileItem6);
fileJMenu.addSeparator();
fileJMenu.add(fileItem7);
fileItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
fileItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
fileItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
fileItem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
testFileItem tfi=new testFileItem();
fileItem1.addActionListener(tfi);
fileItem2.addActionListener(tfi);
fileItem3.addActionListener(tfi);
fileItem4.addActionListener(tfi);
fileItem5.addActionListener(tfi);
fileItem6.addActionListener(tfi);
fileItem7.addActionListener(tfi);
//创建子菜单对象
editItem1 = new JMenuItem("撤销(U)");
editItem2 = new JMenuItem("剪切(T)");
editItem3= new JMenuItem("复制(C)");
JMenuItem editItem4= new JMenuItem("粘贴(P)");
editItem5= new JMenuItem("删除(L)");
editItem6= new JMenuItem("查找(F)");
JMenuItem editItem8= new JMenuItem("替换(R)");
JMenuItem editItem10= new JMenuItem("全选(A)");
JMenuItem editItem11= new JMenuItem("时间/日期(D)");
//添加菜单列表
editJMenu.add(editItem1);
editJMenu.addSeparator();
editJMenu.add(editItem2);
editJMenu.add(editItem3);
editJMenu.add(editItem4);
editJMenu.add(editItem5);
editJMenu.addSeparator();
editJMenu.add(editItem6);
editJMenu.add(editItem8);
editJMenu.addSeparator();
editJMenu.add(editItem10);
editJMenu.add(editItem11);
editItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
editItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
editItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
editItem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
editItem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
editItem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
editItem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
editItem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
editItem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
testEditItem tei=new testEditItem();
editItem1.addActionListener(tei);
editItem2.addActionListener(tei);
editItem3.addActionListener(tei);
editItem4.addActionListener(tei);
editItem5.addActionListener(tei);
editItem6.addActionListener(tei);
editItem8.addActionListener(tei);
editItem10.addActionListener(tei);
editItem11.addActionListener(tei);
//创建子菜单对象
JMenuItem formatItem1= new JMenuItem("自动换行(W)");
JMenuItem formatItem2= new JMenuItem("字体(F)");
//添加菜单列表
formatJMenu.add(formatItem1);
formatJMenu.addSeparator();
formatJMenu.add(formatItem2);
formatItem1.addActionListener(new testFormatItem());
formatItem2.addActionListener(new testFormatItem());
//创建子菜单对象
JMenuItem lookItem1 = new JMenuItem("状态栏(S)");
//添加菜单列表
lookJMenu.add(lookItem1);
lookItem1.addActionListener(new testFormatItem());
//创建子菜单对象
JMenuItem helpItem1 = new JMenuItem("帮助主题(H)");
JMenuItem helpItem2 = new JMenuItem("关于记事本(A)");
//添加菜单列表
helpJMenu.add(helpItem1);
helpJMenu.addSeparator();
helpJMenu.add(helpItem2);
helpItem1.addActionListener(new testHelpItem());
helpItem2.addActionListener(new testHelpItem());
//添加菜单
menuBar.add(fileJMenu);
menuBar.add(editJMenu);
menuBar.add(formatJMenu);
menuBar.add(lookJMenu);
menuBar.add(helpJMenu);
//添加菜单栏
f.setJMenuBar(menuBar);
//添加多行文本
f.setLayout(new BorderLayout());
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JScrollPane(jta), BorderLayout.CENTER);
f.addWindowListener(new testActionListener());
//设置窗体大小
f.setSize(700,600);
//设置窗体位子
f.setLocation(100,100);
//设置窗体是否可见
f.setVisible(true);
}
}
class bjEvent implements MenuListener{
public void menuDeselected(MenuEvent e){}
public void menuCanceled(MenuEvent e){}
public void menuSelected(MenuEvent e){
if(testFrame.jta.getText().equals("")){
testFrame.editItem1.setEnabled(false);
testFrame.editItem2.setEnabled(false);
testFrame.editItem3.setEnabled(false);
testFrame.editItem5.setEnabled(false);
testFrame.editItem6.setEnabled(false);
}else{
testFrame.editItem1.setEnabled(true);
testFrame.editItem2.setEnabled(true);
testFrame.editItem3.setEnabled(true);
testFrame.editItem5.setEnabled(true);
testFrame.editItem6.setEnabled(true);
}
}
}
class testActionListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
String s = testFrame.f.getTitle();
if(testFrame.jta.getText().equals("")){
System.exit(0);
}else{
int i = JOptionPane.showConfirmDialog(null,"文件 " + s + " 的文字已经改变. \n 想保存文件吗 ?","记事本",JOptionPane.YES_NO_CANCEL_OPTION);
switch (i){
case 0 :
new testFileSave();
break;
case 1 :
System.exit(0);
break;
}
}
}
}
class testHelpItem implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("帮助主题(H)")){
try{
Runtime r = Runtime.getRuntime();
r.exec("cmd.exe /c start notepad.chm");
}catch(IOException ee){
}
}else if(e.getActionCommand().equals("关于记事本(A)")){
JOptionPane.showOptionDialog(null,
"Java(R) 记事本\n" +
"版本 6.0\n" +
"版权所有 (C) 2008-2028\n" +
"本产品授权给:\n"+
"All Uers",
"关于 记事本",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null, null, null);
}
}
}
class testFileSave{
public testFileSave(){
FileDialog fd = new FileDialog(new Frame(),"保存文件",FileDialog.SAVE);
fd.setVisible(true);
String fileName = fd.getDirectory() + fd.getFile();
testFile tf =new testFile();
testFrame.f.setTitle(fd.getFile());
tf.testSaveFile(fileName);
}
}
class testFileItem implements ActionListener{
public static String fileName;
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("新建(N)")){
if(testFrame.jta.getText().equals("")){
testFrame.jta.setText("");
}else{
String s = testFrame.f.getTitle();
int i = JOptionPane.showConfirmDialog(null,"文件 " + s + " 的文字已经改变. \n 想保存文件吗 ?","记事本",JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.YES_NO_CANCEL_OPTION);
if(i == 0){
new testFileSave();
}else if(i == 1){
testFrame.jta.setText("");
}else if(i == 2){
}
}
}else if(e.getActionCommand().equals("打开(O)")){
String s = testFrame.f.getTitle();
if(!testFrame.jta.getText().equals("")){
int i = JOptionPane.showConfirmDialog(null,"文件 " + s + " 的文字已经改变. \n 想保存文件吗 ?","记事本",JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.YES_NO_CANCEL_OPTION);
if(i == 0){
new testFileSave();
}else if(i == 1){
FileDialog fd = new FileDialog(new Frame(),"打开文件",FileDialog.LOAD);
fd.setVisible(true);
fileName = fd.getDirectory()+fd.getFile();
testFrame.f.setTitle(fd.getFile());
testFile tf =new testFile();
tf.testOpenFile(fileName);
}else if(i == 2){
}
}else{
FileDialog fd = new FileDialog(new Frame(),"打开文件",FileDialog.LOAD);
fd.setVisible(true);
fileName = fd.getDirectory()+fd.getFile();
testFrame.f.setTitle(fd.getFile());
testFile tf =new testFile();
tf.testOpenFile(fileName);
}
}else if (e.getActionCommand().equals("保存(S)")){
new testFileSave();
}else if (e.getActionCommand().equals("另存为(A)")){
new testFileSave();
}else if (e.getActionCommand().equals("页面设置(U)")){
PageableText.dayin();
}else if (e.getActionCommand().equals("打印(P)")){
PrinterJob prtMe = PrinterJob.getPrinterJob();
try{
prtMe.printDialog();
}catch(Exception ew){
}
}else if (e.getActionCommand().equals("退出(X)")){
if(testFrame.jta.getText().equals("")){
System.exit(0);
}else{
String s = testFrame.f.getTitle();
int i = JOptionPane.showConfirmDialog(null,"文件 " + s + " 的文字已经改变. \n 想保存文件吗 ?","记事本",JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.YES_NO_CANCEL_OPTION);
if(i == 0){
new testFileSave();
}else if(i == 1){
System.exit(0);
}
}
}
}
}
class testFormatItem implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("自动换行(W)")){
if(testFrame.bool==false){
testFrame.jta.setLineWrap(true);
testFrame.bool=true;
}else if(testFrame.bool==true){
testFrame.jta.setLineWrap(false);
testFrame.bool=false;
}
System.out.println(testFrame.jta.getColumns());
}else if(e.getActionCommand().equals("字体(F)")){
new testFontFrame();
}else if(e.getActionCommand().equals("状态栏(S)")){
}
}
}
class testEditItem implements ActionListener{
public static int find_start=0,find_end=0;
public static JTextField jtf,jt1,jt2;
public static int f_int=0;
public static String f_str="";
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("撤销(U)")){
if(testFrame.um.canUndo()){
testFrame.um.undo();
}
}else if(e.getActionCommand().equals("剪切(T)")){
testFrame.jta.cut();
}else if (e.getActionCommand().equals("复制(C)")){
testFrame.jta.copy();
}else if (e.getActionCommand().equals("粘贴(P)")){
testFrame.jta.paste();
}else if (e.getActionCommand().equals("删除(L)")){
StringBuffer tmp = new StringBuffer ( testFrame.jta.getText());//临时存储文本
int start = testFrame.jta.getSelectionStart(); //得到要删除的字符串的起始位置
int len = testFrame.jta.getSelectedText().length(); //得到要删除的字符串的长度
tmp.delete( start , start+len); ///删除所选中的字符串
testFrame.jta.setText(tmp.toString());//用新文本设置原文本
}else if (e.getActionCommand().equals("查找(F)")){
JDialog jd=new JDialog(testFrame.f,"查找");
jtf=new JTextField(10);
JLabel jl=new JLabel("查找内容:");
JButton jb=new JButton("查找");
jd.setLayout(new FlowLayout());
jd.add(jl);
jd.add(jtf);
jd.add(jb);
jd.setSize(300,120);
jd.setVisible(true);
jd.setLocation(250,250);
jb.addActionListener(new Myfind());
}else if (e.getActionCommand ().equals("替换(R)")){
testEditItem.find_end=0;
testEditItem.find_start=0;
JFrame jf = new JFrame("替换");
JLabel jl1 = new JLabel("查找内容(N):");
JLabel jl2 = new JLabel("替换为(P):");
jt1 =new JTextField(12);
jt2 = new JTextField(12);
JButton jb1 = new JButton("查找下一个");
JButton jb2 = new JButton("替换");
JButton jb3 = new JButton("全部替换");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -