📄 notepad.java
字号:
package notepad;import java.awt.Graphics;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Date;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.KeyStroke;import javax.swing.filechooser.FileFilter;import sun.security.krb5.internal.n;import sun.util.calendar.CalendarDate;import sun.util.calendar.Gregorian;import java.awt.Color;import java.awt.Component;import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.SystemColor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.border.Border;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;public class NotePad{ public static void main(String[] args) { MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } }class MyFrame extends JFrame{ private JMenuBar bar; private JMenu file; private JMenuItem create; private JMenuItem open; private JMenuItem save; private JMenuItem exit; private JMenu edit; private JMenuItem copy; private JMenuItem paste; private JMenuItem cut; private JMenuItem statistic; private JMenuItem selectAll; private JMenuItem timeanddate; private JMenu form; private JCheckBoxMenuItem line; private JCheckBoxMenuItem editable; private JMenuItem fontChoose; private JMenu help; private JMenuItem helponline; private JMenuItem about; private JTextArea text; private FileFilter filter; private JPopupMenu popup; private JMenuItem copyC; private JMenuItem pasteC; private JMenuItem cutC; private JMenuItem selectAllC; private Font font; public MyFrame() { setTitle("记事本"); setSize(600,400); filter = new FileFilter() { public boolean accept(File f) { return f.getName().toLowerCase().endsWith(".txt") ||f.isDirectory(); } public String getDescription() { return "Text File"; } }; bar = new JMenuBar(); file = new JMenu("文件(F)"); file.setMnemonic('F'); create = new JMenuItem("新建"); create.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); create.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { text.setText(""); setTitle("记事本"); } }); file.add(create); open = new JMenuItem("打开"); open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); exit = new JMenuItem("退出"); exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.ALT_MASK)); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); open.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser ch = new JFileChooser(); ch.setCurrentDirectory(new File("C:\\")); ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); ch.setFileFilter(filter); int result = ch.showOpenDialog(null); String path; if ( result == JFileChooser.APPROVE_OPTION) { path = ch.getSelectedFile().getPath(); try { FileInputStream inputFile = new FileInputStream(path); byte[] data = new byte[inputFile.available()]; inputFile.read(data); text.setText(new String(data)); setTitle( path + "-" + "记事本" ); inputFile.close(); } catch(IOException ee) {} } } }); save = new JMenuItem("保存"); save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); save.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser ch = new JFileChooser(); ch.setCurrentDirectory(new File("C:\\")); ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); ch.setFileFilter(filter); int result = ch.showOpenDialog(null); String path; if ( result == JFileChooser.APPROVE_OPTION) { path = ch.getSelectedFile().getPath(); try { FileOutputStream outputFile = new FileOutputStream(path); String s = text.getText(); byte[] data = s.getBytes(); outputFile.write(data); outputFile.close(); } catch(IOException ee) {} } } }); file.add(open); file.add(save); file.addSeparator(); file.add(exit); bar.add(file); edit = new JMenu("编辑(E)"); edit.setMnemonic('E'); cut = new JMenuItem("剪切"); cut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { text.cut(); } }); cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK)); copy = new JMenuItem("复制"); copy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { text.copy(); } }); copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); paste = new JMenuItem("粘贴"); paste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { text.paste(); } }); paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK)); selectAll = new JMenuItem("全选"); selectAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { text.selectAll(); } }); selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK)); statistic = new JMenuItem("字数统计"); statistic.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { String temp = text.getSelectedText(); temp = temp.trim(); JTextArea t = new JTextArea(temp); JOptionPane.showMessageDialog(null," 您选择了"+t.getLineCount()+"行"+temp.length()+"个字"); } catch(Exception ex) { JOptionPane.showMessageDialog(null," 请选择文本,否则无法统计"); } } }); timeanddate = new JMenuItem("时间/日期"); timeanddate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Date date = new Date(); //Gregorian calendar = new Gregorian(); //CalendarDate calendarDate = calendar.getCalendarDate(date.getTime()); int minute = date.getMinutes(); int hour = date.getHours(); int year = date.getYear()+1900; int month = date.getMonth()+1; int day = date.getDate(); String printDate = hour+":"+minute+" "+year+"-"+month+"-"+day; text.append(printDate); } }); edit.add(cut);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -