Java 如何在JComboBox中区分setSelectedItem调用和actionPerformed方法
我有一个在JComboBox中发生值更改时调用的方法Java 如何在JComboBox中区分setSelectedItem调用和actionPerformed方法,java,swing,combobox,jcombobox,Java,Swing,Combobox,Jcombobox,我有一个在JComboBox中发生值更改时调用的方法 public void actionPerformed( ActionEvent e ) { Object source = e.getSource(); if( source.equals( listComboBox ) ) { changeList(); } } public void changeList() { //do some stuff ..... ..... //warn t
public void actionPerformed( ActionEvent e )
{
Object source = e.getSource();
if( source.equals( listComboBox ) )
{
changeList();
}
}
public void changeList()
{ //do some stuff
.....
.....
//warn the user
}
我的问题是,在初始加载方法中也会调用此方法。
方法中会弹出一条警告消息。
这仅在用户更改组合框的选定值时才需要。(在加载方法的代码中设置值时不需要。)
是否有一种方法(标记,不同的方法)来区分这些操作并仅在需要时发出警告消息?您有两种选择。第一种方法是对每个组件应用一个唯一的侦听器,并以不同的方式处理事件(在大多数情况下,我更喜欢这种方法,因为它可以使每个组件的代码保持简单,并且更好地阅读) 第二个是确定触发事件的组件。一种检查方法是获取事件源并检查它是否与实际对象匹配,或者只需检查它是否为“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..
}