3

我向 JCheckBox 组件添加了一个监听器,我想手动调用监听器。怎么做?

myCheckBox.selected(false) 

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

4

3 回答 3

6

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

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));
于 2016-08-18T14:27:35.620 回答
0

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

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

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

于 2012-07-30T09:45:19.723 回答
0

与其尝试调用监听器,为什么不直接使用单独的方法呢?

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

然后,method()当您想运行与侦听器分开的代码时,只需调用即可。

于 2016-08-18T14:46:53.603 回答