//主界面
package edit;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Rectangle;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;
import javax.swing.text.Utilities;
import javax.swing.undo.UndoManager;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Date;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.JPopupMenu;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.KeyStroke;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import javax.swing.JToolBar;
import javax.swing.JButton;
public class Window {
JFrame frame;
JTextArea textArea = new JTextArea();
private JMenuBar menuBar = new JMenuBar();
private JMenu mnNewMenuFile = new JMenu("\u6587\u4EF6(F)");
private JMenuItem menuItemNew = new JMenuItem("\u65B0\u5EFA ");
private JMenuItem menuItemOpen = new JMenuItem("\u6253\u5F00");
private JMenuItem menuItemSave = new JMenuItem("\u4FDD\u5B58");
private JMenuItem menuItemExit = new JMenuItem("\u9000\u51FA");
private JMenuItem menuItemSaveAs = new JMenuItem("\u53E6\u5B58\u4E3A");
private File currentFile;
private final JMenu menuEdit = new JMenu("\u7F16\u8F91(E)");
private final JMenuItem menuItemSelect = new JMenuItem("\u67E5\u627E");
private final JMenuItem menuItemReplace = new JMenuItem("\u66FF\u6362 ");
private final JMenuItem menuItemSelectAll = new JMenuItem("\u5168\u9009");
private final JMenuItem menuItemData = new JMenuItem("\u65F6\u95F4/\u65E5\u671F");
private final JMenu menuForm = new JMenu("\u683C\u5F0F(O)");
private final JMenuItem menuItem = new JMenuItem("\u5B57\u4F53");
private final JCheckBox checkBox = new JCheckBox("\u81EA\u52A8\u6362\u884C");
private final JLabel label = new JLabel("\u884C\uFF1A");
private final JLabel label_1 = new JLabel("\u5217\uFF1A");
private final JPopupMenu popupMenu = new JPopupMenu();
private final JMenuItem menuItemCopy = new JMenuItem("\u590D\u5236");
private final JMenuItem menuItemPaste = new JMenuItem("\u7C98\u8D34");
private final JMenuItem menuItemCut = new JMenuItem("\u526A\u5207");
private final JMenuItem menuItemUndo = new JMenuItem("\u64A4\u9500");;
private UndoManager um = new UndoManager();
private final JMenuItem menuItemRedo = new JMenuItem("\u6062\u590D");
private JLabel labelLine = new JLabel("0");
private JLabel labelCol = new JLabel("0");
private JLabel labelCharNum = new JLabel("0");
private Process po;
private Console con;
private static Window window;
/**
* 启动程序
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
window = new Window();
window.frame.setVisible(true);
window.textArea.requestFocus();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Window() {
initialize();
}
/**
* 初始化窗口
*/
private void initialize() {
frame = new JFrame();
frame.setResizable(false);
frame.setTitle("新建文本");
frame.setBounds(100, 100, 900, 700);
frame.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
if(!textArea.getText().equals(""))
fileNew();
System.exit(0);
}
});
frame.getContentPane().setLayout(null);
label.setBounds(30, 3, 35, 15);
frame.getContentPane().add(label);
label_1.setBounds(120, 3, 33, 15);
frame.getContentPane().add(label_1);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 26, 894, 625);
frame.getContentPane().add(scrollPane);
//注册撤销可编辑监听器
textArea.getDocument().addUndoableEditListener(new UndoableEditListener(){
public void undoableEditHappened(UndoableEditEvent e) {
um.addEdit(e.getEdit());
}
});
//监听光标移动
textArea.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent arg0) {
if(getLineNum(textArea)!=-1){
labelCol.setText(Integer.valueOf(getColumnNum(textArea)).toString());
labelLine.setText(Integer.valueOf(getLineNum(textArea)).toString());
labelCharNum.setText(Integer.valueOf(getCharNum(textArea)).toString());
}else{
labelCol.setText("0");
labelLine.setText(Integer.valueOf((Integer.valueOf( labelLine.getText() )+1)).toString());
labelCharNum.setText(Integer.valueOf(getCharNum(textArea)).toString());
}
}
});
textArea.setFont(new Font("黑体",Font.BOLD,18));
textArea.setLineWrap(true);
scrollPane.setViewportView(textArea);
addPopup(textArea, popupMenu);
menuItemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
menuItemCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.copy();
}
});
popupMenu.add(menuItemCopy);
menuItemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
menuItemCut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.cut();
}
});
popupMenu.add(menuItemCut);
menuItemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
menuItemPaste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.paste();
}
});
popupMenu.add(menuItemPaste);
menuItemUndo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
um.undo();
}catch(Exception e1){
JOptionPane.showMessageDialog(frame, "没有可撤销的操作!");
}
}
});
popupMenu.add(menuItemUndo);
menuItemRedo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
um.redo();
}catch(Exception e1){
JOptionPane.showMessageDialog(frame, "没有可恢复的操作!");
}
}
});
popupMenu.add(menuItemRedo);
JLabel label_2 = new JLabel("\u5B57\u6570\uFF1A");
label_2.setBounds(211, 3, 50, 15);
frame.getContentPane().add(label_2);
labelLine.setBounds(56, 3, 54, 15);
frame.getContentPane().add(labelLine);
labelCol.setBounds(147, 3, 54, 15);
frame.getContentPane().add(labelCol);
labelCharNum.setBounds(251, 3, 54, 15);
frame.getContentPane().add(labelCharNum);
JToolBar toolBar = new JToolBar();
toolBar.setBounds(730, 3, 164, 23);
frame.getContentPane().add(toolBar);
JButton btnUndo = new JButton("\u2190 \u64A4\u9500(U)");
btnUndo.setMnemonic('U');
btnUndo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
um.undo();
}catch(Exception e1){
JOptionPane.showMessageDialog(frame, "没有可撤销的操作!");
}
}
});
toolBar.add(btnUndo);
JButton btnRedo = new JButton("\u2192 \u6062\u590D(R)");
btnRedo.setMnemonic('R');
btnRedo.addActionListener(new ActionList
- 1
- 2
- 3
- 4
前往页