【急等回复,帮忙啊!】为什么menuItem的事件被重复监听 本帖最后由 al2o3_1124 于 2011-05-03 19:58:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢!代码很长,但问题应该就出现在这部分,groupTree是一个JTree,只有一个根节点,4个子节点,我给先JTree加了个MouseListenergroupTree.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent evt) { selTreeRow = groupTree.getRowForLocation(evt.getX(), evt.getY());//获取点击的节点 if (selTreeRow > 0) { //Row>0说明点的是子节点 if (evt.getButton() == MouseEvent.BUTTON3) { //如果点击右键 //使JPoppuMenu出现在点击位置 groupMenu.show(evt.getComponent(), evt.getX(),evt.getY()); //以下add,delete,modify是我加在groupMenu上的JMenuItem add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Add Clicked!"); } }); delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Delete Clicked!"); } }); modify.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Modify Clicked!"); } }); } else { //如果点击的不是右键,即点左键,会对旁边的JTable进行如下操作 List<User> users = groups.get(selTreeRow - 1).getUsers(); table.setModel(getTableContent(users)); table.updateUI(); } } }});怎么样?LS觉得跟我加在JTree上的listener有关吗? 可以写在一个addActionListener里面的~ 你把添加addActionListener放到了mouseClicked里,当然是每点一次都添加了一遍Listener了,你应该在界面初始化时生成好菜单并添加好监听,点击鼠标时只需要把菜单显示出来 7L正解在编GUI时,最好把所有组件的初始化放到构造器中 Private变量 public和default应用到class上的区别,不是指类成员哦 JAVA初学者之旅(希望对JAVA初学者学习有帮助) 关于文件改名 随即数的问题 [转]如何合理设计MVC模块? java程序如何读取声音文件(不用Applet,而是一般的java application程序中.....) 要做一个FTP client, 其中有一个进度条, 但只能用jdk1.1, 谁有思路? 数字旋转方针为什么输出时报空值针错误 java 实例变量存放在堆区还是栈区? 我从Eclipse中导出可执行jar,在别的机器上执行不了,buildpath中的内容怎么导出? 关于对象的周期
代码很长,但问题应该就出现在这部分,groupTree是一个JTree,只有一个根节点,4个子节点,我给先JTree加了个MouseListener
groupTree.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
selTreeRow = groupTree.getRowForLocation(evt.getX(), evt.getY());//获取点击的节点
if (selTreeRow > 0) { //Row>0说明点的是子节点
if (evt.getButton() == MouseEvent.BUTTON3) { //如果点击右键
//使JPoppuMenu出现在点击位置
groupMenu.show(evt.getComponent(), evt.getX(),evt.getY());
//以下add,delete,modify是我加在groupMenu上的JMenuItem
add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Add Clicked!"); }
});
delete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Delete Clicked!");
}
});
modify.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Modify Clicked!");
}
});
} else { //如果点击的不是右键,即点左键,会对旁边的JTable进行如下操作
List<User> users = groups.get(selTreeRow - 1).getUsers();
table.setModel(getTableContent(users));
table.updateUI();
}
}
}
});怎么样?LS觉得跟我加在JTree上的listener有关吗?
在编GUI时,最好把所有组件的初始化放到构造器中