java记事本

来源:互联网 发布:办公软件必备技能 编辑:程序博客网 时间:2024/05/17 03:27

原创记事本小程序~实现新建,保存,打开,剪切,复制,粘贴,查找,替换。

package java实验九;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;public class NotePadDemo extends JFrame implements ActionListener{private JMenuItem jmiNew,jmiOpen,jmiSave,jmiExit,jmiAbout,jmiTopic,jmiCut,jmiCopy,jmiPaste,jmiUndo,jmialldo,jmiRedo,jmifind,jmirepalace;//打开的菜单名字private JTextArea jta=new JTextArea();              //文本域private JTextField ca,tad;                               //输入框private JLabel tidai=new JLabel("代替成:"); private JLabel jlbStatus=new JLabel();            //    显示域    private JButton buttonzao=new JButton();private JButton butttidai=new JButton();private JFileChooser chooser=new JFileChooser();      //对话框public NotePadDemo() {jta.setFont(new Font(null,0,15));          //设置文本域属性setTitle("记事本");JMenuBar mb=new JMenuBar();                 //菜单栏setJMenuBar(mb);                           //设置mb菜单属性JMenu fileMenu=new JMenu("文件(F)");         JMenu editMenu=new JMenu("编辑(E)");JMenu geshiMenu=new JMenu("格式(G)");JMenu helpMenu=new JMenu("关于(H)");fileMenu.setMnemonic('F');                     //设置热键feditMenu.setMnemonic('E');                     //设置热键fgeshiMenu.setMnemonic('G');                     //设置热键fhelpMenu.setMnemonic('H');                     //设置热键fmb.add(fileMenu);mb.add(editMenu);mb.add(geshiMenu);mb.add(helpMenu);fileMenu.add(jmiNew=new JMenuItem("新建"));fileMenu.add(jmiOpen=new JMenuItem("打开"));fileMenu.add(jmiSave=new JMenuItem("保存"));fileMenu.addSeparator();                                 //加入分割线fileMenu.add(jmiExit=new JMenuItem("退出"));editMenu.add(jmiCut=new JMenuItem("剪切 "));editMenu.add(jmiCopy=new JMenuItem("复制  "));editMenu.add(jmiPaste=new JMenuItem("粘贴  "));editMenu.add(jmifind=new JMenuItem("查找"));editMenu.add(jmirepalace=new JMenuItem("替代"));editMenu.addSeparator();editMenu.add(jmialldo=new JMenuItem("全选 "));helpMenu.add(jmiAbout=new JMenuItem("关于记事本"));jmiNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));  //设置快捷jmiOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));jmiSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));jmiExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));jmifind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,ActionEvent.CTRL_MASK));jmirepalace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,ActionEvent.CTRL_MASK));jmiCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.CTRL_MASK));jmialldo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.CTRL_MASK));jmiCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));jmiPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK));chooser.setCurrentDirectory(new File("."));   //设置对话框的路径add(new JScrollPane(jta),BorderLayout.CENTER);add(jlbStatus,BorderLayout.PAGE_END);                                     //注册事件jmiOpen.addActionListener(this);     // 打开jmiNew.addActionListener(this);//           保存jmiSave.addActionListener(this);//           保存jmiAbout.addActionListener(this);//         关于jmiExit.addActionListener(this); //          退出jmialldo.addActionListener(this);//     全选jmiCut.addActionListener(this);  //     剪切jmiCopy.addActionListener(this);  //复制jmirepalace.addActionListener(this);  //替代jmiPaste.addActionListener(this);//粘贴jmifind.addActionListener(this);setSize(600,400);setLocationRelativeTo(null);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {            //设置执行事件if(e.getSource()==jmiOpen) {open();}else if(e.getSource()==jmiSave) {save();}else if(e.getSource()==jmiNew) {renew();}else if(e.getSource()==jmialldo) {jta.selectAll();}else if(e.getSource()==jmiCut) {jta.cut();}else if(e.getSource()==jmiPaste) {jta.paste();}else if(e.getSource()==jmiCopy) {jta.copy();}else if(e.getSource()==jmifind) {     find();}else if(e.getSource()==buttonzao) {zao();}else if(e.getSource()==jmirepalace) {tida();                  }else if(e.getSource()==butttidai) {tidaiwenben();}else if(e.getSource()==jmiAbout)JOptionPane.showMessageDialog(this, "用java语言开放的记事本程序","关于记事本",JOptionPane.INFORMATION_MESSAGE);else if(e.getSource()==jmiExit)System.exit(0);}private void tidaiwenben() {String s=ca.getText();              //提取ca输入框内容String ss=tad.getText();              //提取tab输入框内容x = jta.getText().indexOf(s,x+1);if (x == -1) {JOptionPane.showConfirmDialog(null, "没找到: " + s,"查找结果",JOptionPane.CANCEL_OPTION);} else {jta.setSelectionStart(x);jta.setSelectionEnd(x + s.length());jta.replaceSelection(ss);}}private void tida() {JFrame frame=new JFrame("逐个替代");JPanel j1=new JPanel();JPanel j2=new JPanel();frame.setSize(300, 120); butttidai=new JButton("确定"); j1.add(ca=new JTextField(12),BorderLayout.LINE_START);j1.add(tidai,BorderLayout.CENTER);j1.add(tad=new JTextField(12),BorderLayout.AFTER_LINE_ENDS);j1.add(butttidai);frame.add(j1);butttidai.addActionListener(this);frame.setVisible(true);    frame.setLocationRelativeTo(null);}int x=-1;private void zao() {String s=ca.getText();              //提取输入框内容x = jta.getText().indexOf(s,x+1);if (x == -1) {JOptionPane.showConfirmDialog(null, "没找到: " + s,"查找结果",JOptionPane.CANCEL_OPTION);} else {jta.setSelectionStart(x);jta.setSelectionEnd(x + s.length());}}private void find() {JFrame frame=new JFrame("查找");JPanel j1=new JPanel();frame.setSize(300, 100); buttonzao=new JButton("查找"); j1.add(ca=new JTextField(12));j1.add(buttonzao);frame.add(j1);buttonzao.addActionListener(this);frame.setVisible(true);    frame.setLocationRelativeTo(null);}private void renew() {JFrame frame=new JFrame("新建记事本");JPanel panel1=new JPanel();JLabel renew1=new JLabel("是否保存文件?",JLabel.CENTER);JButton shi=new JButton("保存");JButton fou=new JButton("不保存");shi.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {save();jta.setText("");frame.dispose();}});fou.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {jta.setText("");frame.dispose();jlbStatus.setText("文件放弃保存");//jta.add(jlbStatus,BorderLayout.PAGE_END);}});    frame.setSize(300, 100);     panel1.add(shi);    panel1.add(fou);    frame.add(renew1,BorderLayout.CENTER);    frame.add(panel1,BorderLayout.PAGE_END);    frame.setVisible(true);    frame.setLocationRelativeTo(null);}private void open() {                //打开文件的方法if(chooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION) {File file=chooser.getSelectedFile();   //设置选择到的文件try {BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));    //设置输入流byte[]b=new byte[in.available()];       //返回从该输入流中可以读取的字节数的估计值in.read(b,0,b.length);//read(byte[] b, int off, int len) 从给定的偏移开始,将字节输入流中的字节读入指定的字节数组。jta.append(new String (b,0,b.length));  //   将给定的文本附加到文档的末尾。in.close();jlbStatus.setText("打开文件"+file.getName()); this.setTitle(file.toString()+"-记事本");}catch(IOException ex) {jlbStatus.setText("打开文件错误:"+file.getName());}}}private void save() {if(chooser.showSaveDialog(this)==JFileChooser.APPROVE_OPTION) {File file=chooser.getSelectedFile();try {BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(file));byte[]b=(jta.getText()).getBytes();out.write(b,0,b.length);out.close();jlbStatus.setText("文件已经保存:"+file.getName());}catch(IOException ex) {jlbStatus.setText("保存文件错误:"+file.getName());}}}public static void main(String[] args) {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e) {}SwingUtilities.invokeLater(new Runnable() {public void run() {new NotePadDemo();}});} }

运行:




总结:光标的操作一开始不清楚,查看了资料才知道怎么使用。另外,发现虚拟类中的变量不可以进行更改(加减乘除)?或许是我操作的问题,造成不小的麻烦~



原创粉丝点击