【发布时间】:2013-08-09 08:19:53
【问题描述】:
我希望 Java 并不像我在它的努力让我相信的那样不优雅。
我正在使用 JRadioButtons,并希望以编程方式确定与它们关联的“ID”。为此,我正在尝试读取其 NetBeans 属性中列出的“名称”。
在ide中,当我右键单击组件时,会出现“更改变量名称...”的选项,我用它来设置诸如rb1,rb2等值。
但在属性面板中,还有“名称”条目可以设置为不同的值。我用它来设置“id”-s,例如 1、2 等。
使用单选按钮,我知道我可以有一系列 if 语句,在处理程序中询问
Object src = evt.getSource();
int val=-1;
if (src == rb1) { val=1; }
else if (src == rb2) { val=2; }
else if (src == rb3) { val=3; }
else { val=4; }
但是,除了要求我自己用控件名称对 id 值进行硬编码之外,我很容易出现转录错误,我想相信有更简单的单语句方法来实现这一点,例如:
String name = rbGroup.getSelection().getName();
.getText();
.getLabel();
但是,我似乎被多个 if-else 语句的不那么优雅和冗长的使用所困扰。
如何以最简单的方式查询控件以提供 NetBeans IDE 中列出的属性?
【问题讨论】:
-
哇,我有点失望,因为有人愿意将我的问题否决为“不清楚或缺乏研究努力”。我有工作代码,在发布之前我花了一个多小时在 stackOverflow 和谷歌上研究这个。我试图以清晰的方式写作。也许是因为当我真的希望能够查询处理程序之外的组件时,我试图从事件中读取。在使用 c# 和其他使这个过程相对简单的语言的经验之后,我希望有一个 更好的 方法来用 Java 实现这个结果。
-
毕竟,使用c#,我可以随时获取选中的单选按钮: RadioButton myRB = myRBG.Controls.OfType
().FirstOrDefault(r => r.Checked);我还可以轻松获取它的名称、AccessibleName 或任何其他属性:Console.WriteLine(myRB.AccessibleName.ToString()); Console.WriteLine(myRB.Name.ToString());但是,我似乎无法在 Java 中这样做。 -
问题不在于java,而在于swing。无论如何,actioneventlistener 可能是你想要的。单击一个单选按钮,会发生一些事情。每个按钮都有自己的监听器。在 netbeans 中要容易得多,这似乎是你正在使用的。
标签: java netbeans components