📄 main.java
字号:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Window;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.print.PrinterJob;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileFilter;
import javax.swing.undo.UndoManager;
import javax.swing.ProgressMonitorInputStream;
public class Main extends JFrame implements ActionListener,KeyListener,MouseListener,UndoableEditListener,WindowListener{
JMenuBar barMenuBar;
public static int number;
JMenu fileMenu,editMenu,viewMenu,toolMenu,appearanceMenu,helpMenu;
JMenuItem newMenuItem,openMenuItem,saveMenuItem,assaveMenuItem,printMenuItem,exitMenuItem, //fileMenu;
redoMenuItem,undoMenuItem,cutMenuItem,copyMenuItem,pasteMenuItem,findMenuItem,selectallMenuItem, //editMenu;
redoMenuItem2,undoMenuItem2,cutMenuItem2,copyMenuItem2,pasteMenuItem2,findMenuItem2,selectallMenuItem2,linewrapMenuItem2, //viewMenu;
javaappearanceMenuItem,unixappearanceMenuItem,windowsappearanceMenuItem, //appearanceMenu;
aboutMenuItem,showtimeMenuItem, //helpMenu;
fontMenuItem;
JButton newButton,openButton,saveButton,assaveButton,printButton,exitButton,redoButton,undoButton,cutButton,copyButton,pasteButton,findButton,
selectallButton,linewrapButton,javaappearanceButton,unixappearanceButton,windowsappearanceButton,aboutButton,showtimeButton;
JCheckBoxMenuItem linewrapMenuItem,showtoolbarMenuItem;
UndoManager undoManger;
JFileChooser chooser;
JToolBar bar1;
JLabel jl;
JPopupMenu textPopup;
JScrollPane scrollpane;
private BufferedReader in;
private PrintWriter write;
JTextArea text;
boolean textAction=false;
PrintRequestAttributeSet attributes;
public Main() {
super.setTitle("My JAVA NOTEPAD For The World");
setSize(880,400);
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
int px = (screensize.width - this.getWidth())/2;
int py = (screensize.height - this.getHeight())/2;
setLocation(px,py);
ImageIcon imageicon = new ImageIcon("image" + File.separatorChar + "3.jpg");
Image image = imageicon.getImage();
showPanel showpanel = new showPanel(image);
showpanel.setSize(300,300);
px = (screensize.width - showpanel.getWidth())/2;
py = (screensize.height -showpanel.getHeight())/2;
showpanel.setLocation(px,py);
Window window = new Window(this);
window.setLayout(new BorderLayout());
window.add(showpanel,BorderLayout.CENTER);
JProgressBar pb = new JProgressBar();
pb.setMinimum(0);pb.setMaximum(100);
pb.setStringPainted(true);
pb.setString("0%");pb.setValue(0);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
window.add(pb,BorderLayout.SOUTH);
window.setSize(300,315);
window.setLocation(px,py);
pb.setString("10%");pb.setValue(10);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
window.show(true);
pb.setValue(0);
pb.setString("20%");pb.setValue(20);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
setLayout(new BorderLayout());
jl = new JLabel("所在位置:");
chooser = new JFileChooser();
scrollpane = new JScrollPane();
textPopup = new JPopupMenu();
linewrapMenuItem2= new JMenuItem("自动换行");
redoMenuItem2 = new JMenuItem("重复");
undoMenuItem2 = new JMenuItem("撤销");
pb.setString("30%");pb.setValue(30);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
cutMenuItem2 = new JMenuItem("剪切");
copyMenuItem2 = new JMenuItem("复制");
pasteMenuItem2 = new JMenuItem("粘贴");
findMenuItem2 = new JMenuItem("查找/替换");
selectallMenuItem2 = new JMenuItem("全部选择");
textPopup.add(linewrapMenuItem2);
textPopup.add(redoMenuItem2);
textPopup.add(undoMenuItem2);
textPopup.add(cutMenuItem2);
textPopup.add(copyMenuItem2);
textPopup.add(pasteMenuItem2);
textPopup.add(findMenuItem2);
textPopup.add(selectallMenuItem2);
undoManger = new UndoManager();
Container container=getContentPane();
pb.setString("40%");pb.setValue(40);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
container.add(jl,BorderLayout.SOUTH);
newButton=new EJButton("新建");
openButton=new EJButton("打开");saveButton=new EJButton("保存");assaveButton=new EJButton("另存");printButton=new EJButton("打印");exitButton=new EJButton("退出");
redoButton=new EJButton("重做");undoButton=new EJButton("撤销");cutButton=new EJButton("剪切");
copyButton=new EJButton("复制");pasteButton=new EJButton("粘贴");findButton=new EJButton("查找替换");selectallButton=new EJButton("全选");linewrapButton=new EJButton("换行");javaappearanceButton=new EJButton("j风格");unixappearanceButton=new EJButton("unix风格");
windowsappearanceButton=new EJButton("win风格");aboutButton=new EJButton("关于");showtimeButton=new EJButton("时间");
bar1=new JToolBar("附件工具栏");
bar1.setBorder(BorderFactory.createTitledBorder("工具栏"));
bar1.add(newButton);bar1.add(openButton);bar1.add(saveButton);bar1.add(assaveButton);bar1.add(printButton);bar1.add(exitButton);bar1.add(redoButton);bar1.add(undoButton);bar1.add(cutButton);
bar1.add(copyButton);bar1.add(pasteButton);bar1.add(findButton);bar1.add(selectallButton);bar1.add(linewrapButton);bar1.add(javaappearanceButton);bar1.add(unixappearanceButton);bar1.add(windowsappearanceButton);bar1.add(aboutButton);bar1.add(showtimeButton);
text=new JTextArea(100,200);
text.requestFocus(true);
text.setToolTipText("Write down your words here");
text.getDocument().addUndoableEditListener(this);
text.addMouseListener(this);
text.addKeyListener(this);
JScrollBar sb =new JScrollBar();
scrollpane.getViewport().add(text);
container.add(scrollpane,BorderLayout.CENTER);
barMenuBar=new JMenuBar();
fileMenu=new JMenu("文件(F)");
fileMenu.setMnemonic('F');
newMenuItem=new JMenuItem("新建");
newMenuItem.setMnemonic('E');
newMenuItem.addActionListener(Main.this);
newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
openMenuItem=new JMenuItem("打开");
openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
saveMenuItem=new JMenuItem("保存");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
pb.setString("50%");pb.setValue(50);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
assaveMenuItem=new JMenuItem("另存为");
assaveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
printMenuItem=new JMenuItem("打印");
printMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
exitMenuItem=new JMenuItem("退出");
exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(assaveMenuItem);
fileMenu.add(printMenuItem);
fileMenu.add(exitMenuItem);
barMenuBar.add(fileMenu);
editMenu=new JMenu("编辑(E)");
editMenu.setMnemonic('E');
redoMenuItem=new JMenuItem("重做");
redoMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
undoMenuItem=new JMenuItem("撤销");
undoMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
cutMenuItem=new JMenuItem("剪切");
cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
copyMenuItem=new JMenuItem("复制");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
pb.setString("60%");pb.setValue(60);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
pasteMenuItem=new JMenuItem("粘贴");
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
findMenuItem=new JMenuItem("查找/替换");
findMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
selectallMenuItem=new JMenuItem("全部选择");
selectallMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK));
editMenu.add(redoMenuItem);
editMenu.add(undoMenuItem);
editMenu.add(cutMenuItem);
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
editMenu.add(findMenuItem);
editMenu.add(selectallMenuItem);
newButton.addActionListener(this);
openButton.addActionListener(this);
saveButton.addActionListener(this);
assaveButton.addActionListener(this);
redoButton.addActionListener(this);
undoButton.addActionListener(this);
cutButton.addActionListener(this);
copyButton.addActionListener(this);
pasteButton.addActionListener(this);
pb.setString("70%");pb.setValue(70);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
findButton.addActionListener(this);
selectallButton.addActionListener(this);
aboutButton.addActionListener(this);
showtimeButton.addActionListener(this);
printButton.addActionListener(this);
exitButton.addActionListener(this);
linewrapButton.addActionListener(this);
javaappearanceButton.addActionListener(this);
unixappearanceButton.addActionListener(this);
windowsappearanceButton.addActionListener(this);
barMenuBar.add(editMenu);
viewMenu=new JMenu("视图(V)");
viewMenu.setMnemonic('V');
linewrapMenuItem=new JCheckBoxMenuItem("自动换行");
linewrapMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
linewrapMenuItem.addActionListener(this);
showtoolbarMenuItem= new JCheckBoxMenuItem("是否显示工具栏");
showtoolbarMenuItem.setSelected(true);
showtoolbarMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,InputEvent.CTRL_MASK));
showtoolbarMenuItem.addActionListener(this);
viewMenu.add(linewrapMenuItem);
viewMenu.add(showtoolbarMenuItem);
barMenuBar.add(viewMenu);
toolMenu=new JMenu("工具(T)");
toolMenu.setMnemonic('T');
fontMenuItem = new JMenuItem("字体/背景颜色");
fontMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_8,InputEvent.CTRL_MASK));
fontMenuItem.addActionListener(this);
toolMenu.add(fontMenuItem);
barMenuBar.add(toolMenu);
appearanceMenu=new JMenu("风格(S)");
appearanceMenu.setMnemonic('S');
javaappearanceMenuItem=new JMenuItem("JAVA");//,unixappearanceMenuItem,windowsappearanceMenuItem,
javaappearanceMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));
unixappearanceMenuItem=new JMenuItem("UNIX");
unixappearanceMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K,InputEvent.CTRL_MASK));
windowsappearanceMenuItem=new JMenuItem("WINDOW");
windowsappearanceMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J,InputEvent.CTRL_MASK));
showtimeMenuItem=new JMenuItem("插入时间");
showtimeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));
appearanceMenu.add(javaappearanceMenuItem);
appearanceMenu.add(windowsappearanceMenuItem);
appearanceMenu.add(unixappearanceMenuItem);
pb.setString("80%");pb.setValue(80);
try {
Thread.currentThread().sleep(31);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -