JFileChooser 问题求解

xww263796376 2010-03-15 12:33:58
各位大虾。。。看看我代码,出来后窗口要关2次 不知道原因
public class NoteBook extends JFrame implements ActionListener{

/**
* @param args
*/
JMenu jm=null;
JMenuBar jmb=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JTextArea jta=null;


public static void main(String[] args) {

NoteBook nb=new NoteBook();
}

public NoteBook(){

jm=new JMenu("文件(F)");
jm.setMnemonic('f');
jmb=new JMenuBar();

jmi1=new JMenuItem("打开(O)");
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi1.setMnemonic('o');

jmi2=new JMenuItem("保存(S)");
jmi2.setMnemonic('s');
jmi1.addActionListener(this);
//jmi1.setActionCommand("save");

jta=new JTextArea();

this.setJMenuBar(jmb);
jmb.add(jm);
jm.add(jmi1);
jm.add(jmi2);

this.setTitle("记事本");
this.setBounds(400,100,400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.add(jta);
this.setVisible(true);
}



public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("open")){

JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("打开....");
jfc.showOpenDialog(null);
jfc.setVisible(true);

}

}

}
...全文
80 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
py330316117 2010-03-15
  • 打赏
  • 举报
回复
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

public class NoteBook extends JFrame implements ActionListener{

/**
* @param args
*/
JMenu jm=null;
JMenuBar jmb=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JTextArea jta=null;
JFileChooser jfc;

public static void main(String[] args) {

NoteBook nb=new NoteBook();
}

public NoteBook(){

jm=new JMenu("文件(F)");
jm.setMnemonic('f');
jmb=new JMenuBar();

jmi1=new JMenuItem("打开(O)");
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi1.setMnemonic('o');

jmi2=new JMenuItem("保存(S)");
jmi2.setMnemonic('s');
jmi2.addActionListener(this);这个地方你写错了,可能是笔误,你调用了2次jmi1的actionListener
//jmi1.setActionCommand("save");

jta=new JTextArea();

this.setJMenuBar(jmb);
jmb.add(jm);
jm.add(jmi1);
jm.add(jmi2);

this.setTitle("记事本");
this.setBounds(400,100,400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.add(jta);
this.setVisible(true);
}



public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("open")){

jfc=new JFileChooser();
jfc.setDialogTitle("打开....");
jfc.showOpenDialog(null);
jfc.setVisible(true);

}

}

}
truediego 2010-03-15
  • 打赏
  • 举报
回复
而且

jfc.setVisible(true);


也是没必要的
truediego 2010-03-15
  • 打赏
  • 举报
回复
jmi2=new JMenuItem("保存(S)");
jmi2.setMnemonic('s');
jmi1.addActionListener(this);


BUG,jm2的Listener加到jm1上去了

引出一个问题,就是变量命名要有实际意义,1,2,3,4之类的命名不仅不好看,更容易出错
qianzhimeiying 2010-03-15
  • 打赏
  • 举报
回复
jmi1=new JMenuItem("打开(O)");
jmi1.addActionListener(this);//一次注册
jmi1.setActionCommand("open");
jmi1.setMnemonic('o');

jmi2=new JMenuItem("保存(S)");
jmi2.setMnemonic('s');
jmi1.addActionListener(this);//二次注册

因此要关两次
xww263796376 2010-03-15
  • 打赏
  • 举报
回复
晕了 ,知道错了谢谢大家

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧