gpt4 book ai didi

Java:透明地处理状态更改事件

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:21 27 4
gpt4 key购买 nike

我的 View 有几个“标志”按钮 (JToggleButton)。当用户单击标记按钮时,我想更新一个数组来跟踪标记了哪些按钮。这非常简单,这就是我所做的:

...
bflag[i].addItemListener(this); //View listens to state change
...

void itemStateChange(ItemEvent ie) {
try {
jtb = (JToggleButton)ie.getSource();
//Update mark array
}
catch (ClassCastException cce) {}
}

这工作得很好,但是用 try/catch 就很难看了。我更愿意做这样的事情:

void itemStateChange(ItemEvent ie) {
handleStateChange(ie.getSource());
}

void handleStateChange(JToggleButton jtb) {
//handle state change
}

void handleStateChange(Object o) {}

这要好得多,但唯一的问题是,即使源是 JToggleButtonObject 方法也会触发(因为 JToggleButton 毕竟是一个 Object)。

我也考虑过使用双重调度,但这需要重写触发 itemStateChange()JToggleButton 方法,而且我不知道那是什么(而且这似乎不安全)。

关于如何在没有 try/catch、条件检查等的情况下使其工作的任何建议?

最佳答案

我认为您必须明确检查类型。

  if(ie.getSource() instanceof JToggleButton){
//toggle button logic
}else{
//something else
}

或者,您可以使用匿名内部类来实现监听器,并避免完全检查源代码。

<小时/>

类似这样的事情:

 toggleBtn.addItemListener(new ItemListener(){
public void itemStateChange(ItemEvent ie){
//handle toggle button event
}
});

关于Java:透明地处理状态更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6059097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com