【发布时间】:2013-11-22 11:56:52
【问题描述】:
我正在使用 Eclipse 的 Window Builder 插件来构建 Java Swing 桌面应用程序前端。 问题是,在 Action Listener 上,当我想获取组件的值时,我会按索引单独获取组件。 见代码 sn-p
public class SomeListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
//button from which action is triggered
JButton startTestButton = (JButton) event.getSource();
//components
Component[] components = startTestButton.getParent().getComponents();
//Get individual components
JCheckBox endUserLabel = (JCheckBox) components[0];
}
}
问题是,当新元素被添加到容器中时,比如说一个 JTextBox,所有元素的索引都会改变。有没有更好的方法来实现这一点?
【问题讨论】:
-
你的意思是你想在一些动作事件上添加组件?
-
@rachana 不,我的意思是,如果有很多组件,那么重组组件的位置或将它们添加到容器中将导致类转换异常,即
JCheckBox endUserLabel = (JCheckBox) components[4];将通过异常 b/c 标签可能是在其他索引上。 -
然后在执行你的代码之前检查它是否是JCheckBox.class。
标签: java swing desktop-application