【问题标题】:How to differentiate between a setSelectedItem call and an actionPerformed methods in JComboBox如何区分 JComboBox 中的 setSelectedItem 调用和 actionPerformed 方法
【发布时间】:2017-10-06 13:44:25
【问题描述】:

我有一个方法,当 JComboBox 中的值发生变化时调用该方法

public void actionPerformed( ActionEvent e )
{
    Object source = e.getSource();
    if( source.equals( listComboBox ) )
    {
        changeList();
    }
}


public void changeList()
{ //do some stuff
.....
.....
//warn the user
}

我的问题是这个方法也是在初始加载方法中调用的。 在该方法中有一条警告消息弹出。 仅当用户更改组合框的选定值时才需要。(当我在加载方法的代码中设置值时不需要。)

有没有办法(标志,不同的方法)来区分这些动作并仅在需要时发出警告消息?

【问题讨论】:

标签: java swing combobox jcombobox


【解决方案1】:

我的问题是这个方法也是在初始加载方法中调用的。

所以在加载完成后将监听器添加到组合框中。

【讨论】:

    【解决方案2】:

    你有两个选择。第一个是为每个组件应用一个唯一的侦听器并以不同的方式处理事件(在大多数情况下我更喜欢这样做,因为它使每个组件的代码保持简单并且更好地阅读)。

    第二个是识别哪个组件触发了事件。一种检查方法是获取事件源并检查它是否与实际对象匹配,或者您可以检查它是否是“instanceof”JComboBox,然后根据需要处理事件。

    if(sourceObject == myComboBox ){ 
        // handle the event 
    }
    

    if(sourceObject instanceof JComboBox{
       // then we are dealing with a combobox
       // if it's the only one then you know what to do..
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      相关资源
      最近更新 更多