手动调用组件侦听器

时间:2012-07-30 09:37:43

标签: java swing

我为JCheckBox组件添加一个监听器,我想手动调用监听器。这样做吗?

myCheckBox.selected(false) 

然后我想调用myCheckBox监听器。你有更好的主意吗?

3 个答案:

答案 0 :(得分:2)

我知道我有点晚了,但这应该可以解决问题:

ItemListener listener = new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
         //whatever your itemStateChanged() looks like.
    }
};
JCheckBox checkBox = new JCheckBox();
checkBox.addItemListener(listener);

然后,无论何时需要手动调用它:

listener.itemStateChanged(
                new ItemEvent(checkBox, ItemEvent.ITEM_STATE_CHANGED, checkBox, 0));

如果您匿名创建了侦听器,您仍然可以像以下一样访问它:

checkBox.getItemListeners()[0].itemStateChanged(
                new ItemEvent(checkBox, ItemEvent.ITEM_STATE_CHANGED, checkBox, 0));

答案 1 :(得分:0)

我真的不知道你使用的是什么checkBox组件。您没有告诉我们您使用哪个框架或提供其他有用的上下文信息。

但总的来说:你的听众是impl。一个界面。此接口定义组件(checkBox)调用的回调方法。

如果您有一个监听器obj的实例。你可以直接调用这个方法。

答案 2 :(得分:0)

不是试图调用Listener,为什么不使用单独的方法?

ItemListener listener = new ItemListener() {
   public void itemStateChanged(ItemEvent e) {
      method();
   }
};
public void method() {
   //code you want to run
}

然后,当您想要与监听器分开运行代码时,只需调用method()