java - 过滤组合框上 ActionPerformed 的源

标签 java swing events listeners

我有 2 个组合框。 上面的组合框动态地更改第二个组合框中的项目。

ActionPerformed 事件如何知道该事件是因为上面的组合框更改了项目而触发的?

我尝试过 我将操作命令设置为两个组合框。 (上、下)。当上部组合框更改下部组合框中的项目时,我得到的命令较低,因为它改变了它......

编辑:我更改了描述

最佳答案

为此,您应该使用actionCommand:

//after object creation:
upperCombo.setActionCommand("upper");
lowerCombo.setActionCommand("lower");

然后在你的actionPerformed()中:

String command = event.getActionCommand();
if("upper".equals(command)){
  //Do something
} else if("lower".equals(command)){
  //Do something
} 

这能解决您的问题吗,还是我误解了您的意思?

编辑:

像这样的事情怎么样:

String command = event.getActionCommand();
if("upper".equals(command)){
  lowerCombo.removeActionListener(this);
  //Do your changes
  lowerCombo.addActionListener(this);
} else if("lower".equals(command)){
  //Do something
} 

编辑(再次;)):

class YourClass{
 private ActionListener lowerActionListener = new java.awt.event.ActionListener() { 
   void actionPerformed(java.awt.event.ActionEvent evt) { 
    //doSomething 
   }
 };

 //...
 // maybe in the constructor, after object-creation
 lowerCB.addActionListener(lowerActionListener);

 //...
 // in th actionPerfomed() method
 lowerCB.removeActionListener(lowerActionListener);

}

关于java - 过滤组合框上 ActionPerformed 的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662930/

相关文章:

java - 使用堆栈计算前缀表达式

Java 递归参数值

java - 单例模式、配置和依赖注入(inject)

java - 是否可以从初始化的类外部更改对象实例?

java - 为此 jframe 选择最佳布局

linux - 如何读取/dev/input/eventX

java - 从填充数组计算范围时出现问题(Java)

java - 1 个 JFrame 中的多个 JPanel 在调用时显示

javascript - onclick td元素,只有这一个会改变

javascript - FlexSlider:如何使用 JS 或 jQuery 在页面加载时获取图像高度?