java Swing 点击对话框选择是或者否后又再次弹出刚才关闭的对话框

我写了个程序,在JTable中的数据上单击右键弹出一个菜单如下图单击删除时弹出一个对话框,可以选择是或者否在多次操作时发现不管我选择是或者否,理论上选择之后就关闭该该警告... 我写了个程序,在JTable中的数据上单击右键弹出一个菜单如下图
单击删除时弹出一个对话框,可以选择是或者否
在多次操作时发现不管我选择是或者否,理论上选择之后就关闭该该警告对话框,不过实际情况是我在选择后对话框关闭了,但是又会自动的再弹出来,要关闭好几次才能关闭。 求各位高手看看,悬赏不是问题。 以下是侦听事件的代码/** * 内部类,实现对JTable的右键侦听
* @author Administrator
*
*/
class myListenerJTable extends MouseAdapter{
private JPopupMenu jPopupMenu = new JPopupMenu();
private JMenuItem delete = new JMenuItem("删除");
private JMenuItem save = new JMenuItem("保存");
public void mousePressed(MouseEvent event) {
detail_TableMouseMousePressed(event);
}

private void detail_TableMouseMousePressed(MouseEvent event) {
if(event.getButton()==3){
jPopupMenu.add(delete);
jPopupMenu.add(save);

delete.setIcon(new ImageIcon("image\\delete.png"));
delete.addActionListener(new ActionListener() {
int b=0;
public void actionPerformed(ActionEvent arg0) {
int a = JOptionPane.showConfirmDialog(null, "是否删除", "警告", JOptionPane.YES_NO_OPTION);
// JOptionPane.showMessageDialog(null, a);
System.out.println(b);
this.b ++;
}
});
save.setIcon(new ImageIcon("image\\save.png"));
save.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {

}
});
jPopupMenu.show(event.getComponent(), event.getX(), event.getY());
}
}
}

下面这一行是JTable 对象添加的侦听事件
detail_Table.addMouseListener(new myListenerJTable());
展开
 我来答
lecroy03
2013-04-11 · TA获得超过313个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:145万
展开全部
建议你把jpopupMenu包括delete、save的构造以及对应的事件都放到鼠标事件mousePressed之外,mousePressed事件里面只放jPopupMenu.show(event.getComponent(), event.getX(), event.getY());
之所以出现多次,就是因为
delete.addActionListener(new ActionListener() {
int b=0;
public void actionPerformed(ActionEvent arg0) {
int a = JOptionPane.showConfirmDialog(null, "是否删除", "警告", JOptionPane.YES_NO_OPTION);
// JOptionPane.showMessageDialog(null, a);
System.out.println(b);
this.b ++;
}
});
你每弹出菜单一次,就在delete上多注册了一次ActionListener,这个listener在源码中是用List存放的,不会覆盖,只会重复增加。你每弹出一次菜单,就会把List里面的所有ActionListener都执行一遍,对话框对应弹出多次。
百度网友845f74e61
2013-04-11 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1620万
展开全部
你的问题在于不该在
if(event.getButton()==3)

这个时候添加弹出菜单,的侦听事件。
你的现象就会该是第二次删除时出现吧。

现在是相当于你点一次右键,
就添加一次删除的侦听事件,
第一次出现一个提示框
第二次出现二个提示框

第三次出现三个提示框

。。。。。。。。。。。。。。

这些初始化的工具应该在其它的方法中进行。比如构造方法。这样才会只响应一次。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
369665219
2013-04-11 · TA获得超过171个赞
知道答主
回答量:67
采纳率:0%
帮助的人:24.2万
展开全部
看看这段代码吧,你关闭一次又一次这个b有没有变化
delete.addActionListener(new ActionListener() {
int b=0;
public void actionPerformed(ActionEvent arg0) {
int a = JOptionPane.showConfirmDialog(null, "是否删除", "警告", JOptionPane.YES_NO_OPTION);
// JOptionPane.showMessageDialog(null, a);
System.out.println(b);
this.b ++;
}
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式