import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
import java.io.*;
public class jsb extends JFrame implements ItemListener{    
               
public jsb(){
super("记事本");                                 //继承超类
setSize(500,300);                                //设置框架大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //定义单击按钮发生的情况
                BorderLayout border=new BorderLayout();          //创建边框布局管理器
                setLayout(border);                               //添加布局管理器到框架
                                             
               JMenuBar MenuBar = new JMenuBar();                //新建菜单栏
               JMenu MenuFile = new JMenu("文件");               //新建菜单
               JMenu MenuEdit = new JMenu("编辑");               //新建菜单
               JMenuItem MenuItemOpen = new JMenuItem("打开");   //新建菜单项
               JMenuItem MenuItemSave = new JMenuItem("保存"); 
               JMenuItem MenuItemCopy = new JMenuItem("复制"); 
               JMenuItem MenuItemPaste = new JMenuItem("粘贴");  //新建菜单项              /* MenuItemOpen.addActionListener(this);             //添加监听器
               MenuItemSave.addActionListener(this);
               MenuItemCopy.addActionListener(this);
               MenuItemPaste.addActionListener(this);*/
         
               MenuFile.add(MenuItemOpen);                       //在菜单中添加选项
               MenuFile.add(MenuItemSave); 
               MenuEdit.add(MenuItemCopy); 
               MenuEdit.add(MenuItemPaste);                     
               MenuBar.add(MenuFile);                            //添加菜单到菜单栏
               MenuBar.add(MenuEdit); 
               add(MenuBar,BorderLayout.NORTH);                  //添加菜单栏到框架
                            
                                   
               JTextArea comments = new JTextArea(8,40);         //创建文本区域                           JScrollPane scroll = new JScrollPane(comments,    //创建滚动窗格并加入文本区域
                   JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                   JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);          
               add(scroll,BorderLayout.CENTER);                  //添加滚动窗格到框架
                      
               setVisible(true);                                 //打开框架
}            public static void main(String[] arguments){
     jsb lj=new jsb();
        }

}
这是我写的一个记事本小程序的界面部分,如何在界面中加入用户操作?以文件菜单下的打开选项为例,怎样才能实现打开操作呢?请各位大神指点,希望能附上一段打开操作的代码让我参考一下!

解决方案 »

  1.   


    package day17;import java.awt.BorderLayout;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;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.JScrollPane;
    import javax.swing.JTextArea;public class JiShiBen implements ActionListener {

    String wenben = "";
    JFrame jf = new JFrame("记事本");
    JTextArea jta = new JTextArea();
    JFileChooser jfc = new JFileChooser();
    String lujing = null;
    public JiShiBen() { JMenuBar jmb = new JMenuBar();
    String[] jmlab = { "文件", "编辑", "帮助" };
    String[][] jmilab = { { "新建", "打开", "", "保存", "另存", "", "退出" },
    { "撤销", "", "剪切", "复制", "粘贴", "", "删除", "全选", "", "查找", "替换" },
    { "版本" } };
    for (int i = 0; i < jmlab.length; i++) {
    JMenu jm = new JMenu(jmlab[i]);
    jmb.add(jm);
    for (int j = 0; j < jmilab[i].length; j++) {
    if ("".equals(jmilab[i][j])) {
    jm.addSeparator();
    } else {
    JMenuItem jmi = new JMenuItem(jmilab[i][j]);
    jmi.addActionListener(this);
    jm.add(jmi);
    }
    }
    }
    jta.setFont(new Font("宋体",Font.BOLD,15));
    JScrollPane jsp = new JScrollPane(jta);
    jf.add(jsp, BorderLayout.CENTER);
    jf.setJMenuBar(jmb);
    jf.setLocation(200, 200);
    jf.setSize(512, 384);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } public void actionPerformed(ActionEvent e) {
    String comm = e.getActionCommand();
    if ("新建".equals(comm)) {

    jfc.setDialogTitle("新建");
    jfc.showDialog(jf, "新建");
    if (jfc.getSelectedFile()!=null) {
    jta.setText("");
    lujing = jfc.getSelectedFile().toString();
    }
    if (lujing!=null) {
    try {
    FileOutputStream fos = new FileOutputStream(lujing);
    fos.write("".getBytes());
    fos.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    } else if ("打开".equals(comm)) {
    jfc.setDialogTitle("打开");
    int op = jfc.showOpenDialog(jf);
    if (op == JFileChooser.APPROVE_OPTION) {
    File f = jfc.getSelectedFile();
    lujing = f.toString();
    String result = "";
    try {
    FileInputStream fis = new FileInputStream(f);
    byte[] b = new byte[1024];
    while (true) {
    int num = fis.read(b);
    if (num == -1) {
    break;
    }
    result = result + new String(b, 0, num);
    }
    fis.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    jta.setText(result);
    }
    } else if ("保存".equals(comm)) {
    if (lujing == null) {
    jfc.setDialogTitle("保存");
    jfc.showSaveDialog(jf);
    wenben = jta.getText();
    if (jfc.getSelectedFile()!=null) {
    try {
    FileOutputStream fos = new FileOutputStream(jfc
    .getSelectedFile());
    fos.write(wenben.getBytes());
    fos.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    } else {
    wenben = jta.getText();
    try {
    FileOutputStream fos = new FileOutputStream(lujing);
    fos.write(wenben.getBytes());
    fos.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    } else if ("另存".equals(comm)) {
    jfc.setDialogTitle("另存为");
    jfc.showSaveDialog(jf);
    if (jfc.getSelectedFile()!=null) {
    try {
    FileOutputStream fos = new FileOutputStream(jfc
    .getSelectedFile());
    fos.write(jta.getText().getBytes());
    fos.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    } else if ("退出".equals(comm)) {
    System.exit(0);
    } else if ("撤销".equals(comm)) {
    jta.setText(wenben);
    } else if ("剪切".equals(comm)) {
    wenben = jta.getText();
    jta.cut();
    } else if ("复制".equals(comm)) {
    jta.copy();
    } else if ("粘贴".equals(comm)) {
    wenben = jta.getText();
    jta.paste();
    } else if ("删除".equals(comm)) {
    wenben = jta.getText();
    jta.replaceSelection("");
    } else if ("全选".equals(comm)) {
    jta.selectAll();
    } else if ("查找".equals(comm)) {
    String s = JOptionPane.showInputDialog(jf, "查找内容:",
    jta.getSelectedText()).trim();
    String temp = jta.getText();
    for (int i = 0; i < temp.length(); i++) {
    int j = temp.indexOf(s, i);
    if (j == -1) {
    break;
    } else {
    jta.select(j, j + s.length());
    int op = JOptionPane.showConfirmDialog(jf, "是否继续查找下一个?",
    "查找", JOptionPane.YES_NO_OPTION);
    if (op == JOptionPane.NO_OPTION) {
    break;
    }
    }
    i = j;
    }
    } else if ("替换".equals(comm)) {
    String s1 = JOptionPane.showInputDialog(jf, "被替换内容:",
    jta.getSelectedText());
    String s2=null;
    if (s1!=null) {
    s2 = JOptionPane.showInputDialog(jf, "替换为:", jta
    .getSelectedText());
    }
    int op=0;
    if (s2!=null) {
    op = JOptionPane.showConfirmDialog(jf,
    "是 替换全部匹配结果\n否 进入逐个替换状态", "替换",
    JOptionPane.YES_NO_OPTION);
    }
    if (op == JOptionPane.NO_OPTION) {
    for (int i = 0; i < jta.getText().length(); i++) {
    String temp = jta.getText();
    int j = temp.indexOf(s1, i);
    if (j == -1) {
    break;
    } else {
    i = j;
    jta.select(j, j + s1.length());
    int op1 = JOptionPane
    .showConfirmDialog(
    jf,
    "是    替换当前匹配内容,并查找下一个\n" +
    "否    不替换当前内容,继续查找下一个\n" +
    "取消 退出替换状态",
    "替换", JOptionPane.YES_NO_CANCEL_OPTION);
    if (op1 == JOptionPane.NO_OPTION) {
    continue;
    } else if (op1 == JOptionPane.CANCEL_OPTION) {
    break;
    } else {
    wenben = jta.getText();
    jta.replaceSelection(s2);
    }
    }
    }
    } else {
    wenben = jta.getText();
    String temp = jta.getText();
    for (int i = 0; i < temp.length(); i++) {
    int j = temp.indexOf(s1, i);
    if (j == -1) {
    break;
    } else {
    jta.select(j, j + s1.length());
    jta.replaceSelection(s2);
    }
    i = j;
    }
    }
    } else {
    JOptionPane.showMessageDialog(jf, "当前版本1.1", "版本",
    JOptionPane.INFORMATION_MESSAGE);
    }
    } public static void main(String[] args) {
    new JiShiBen();
    }}这是我参加培训时交的作业,虽然很烂,但我一直留着。
      

  2.   

    去jdk安装目录下 demo\jfc\Notepad\src 下查看 java代码。