我们有几个复选框,如果选择其中任何一个,我们想要做一些事情(比如在屏幕上显示标签)。我正在阅读本书,它建议使用以下代码,但编译器会给出错误“checkBox无法解析为变量”。
问题1 - 我该如何解决这个问题? 问题2 - ItemEvent对象的getItem和getSource方法有什么区别? (在哪里使用?)。
public void itemStateChanged(ItemEvent ie) {
if( ie.getItem() == checkBox)) { //the book's suggestion but it doesn't work
if(ie.getStateChange() == ItemEvent.SELECTED) {
// statements that execute when the box is checked
} else {
// statements that execute when the box is unchecke
}
} else {
// statements that execute when the source of the event is
// some component other than the checkBox object
}
}
答案 0 :(得分:0)
问题1 - 我该如何解决这个问题?
条件ie.getItem() == checkBox
用于测试状态已更改的项是否是您从中提取代码的示例中感兴趣的特定复选框。您应该将checkBox
替换为对您感兴趣的 复选框的引用。如果已经在范围内没有这样的参考,那么您需要安排一个。
问题2 -
getItem
对象的getSource
和ItemEvent
方法之间的区别是什么? (在哪里使用?)。
getSource()
返回对触发事件的Component
的引用。 getItem()
返回对[de]所选项目的引用。对于复选框和其他类型的按钮,这些按钮将是相同的对象,但对于其他类型的小部件,例如java.awt.List
,它们将是不同的。使用适合于侦听器及其正在侦听的对象的任何一个。
或者,如果您有一个针对特定用途定制的监听器,那么您可能不需要使用任何一个。