“简单地”确定 Java 单选按钮 id

Posted

技术标签:

【中文标题】“简单地”确定 Java 单选按钮 id【英文标题】:"Simply" determining Java Radio Button id 【发布时间】: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 中列出的属性?

【问题讨论】:

哇,我有点失望,因为有人愿意将我的问题否决为“不清楚或缺乏研究努力”。我有工作代码,在发布之前我花了一个多小时在 *** 和谷歌上研究这个。我试图以清晰的方式写作。也许是因为当我真的希望能够查询处理程序之外的组件时,我试图从事件中读取。在使用 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 中要容易得多,这似乎是你正在使用的。 【参考方案1】:

一种方法是使用按钮的Action Command:

rb1.setActionCommand("1");

然后在事件处理程序中你可以使用:

String command = evt.getActionCommand();

如果您没有明确设置,动作命令默认为按钮的文本。

【讨论】:

效果很好。不幸的是,我没有在单击单选按钮时进行此处理,而是在按下单独的“操作”按钮时进行。那时,我将不得不查询多组单选按钮和其他控件,以确定它们的设置以执行适当的操作。除了对事件执行这些 getActionCommands 并存储它们的值以供以后处理之外,是否没有一种方法可以随时类似地询问任何控件以确定其属性? @user2340426,您可以使用ButtonGroup.getSelection() 方法。然后就可以使用ButtonModel.getActionCommand()获取命令了。 效果很好。我唯一遇到的问题是在 NetBeans 属性面板中为 ActionCommand 设置的 #s 消失了。必须在构造函数中设置。哦,好吧,至少它有效。谢谢。

以上是关于“简单地”确定 Java 单选按钮 id的主要内容,如果未能解决你的问题,请参考以下文章

例子:单选按钮确定提交是否可用

在java中性别是单选按钮,如何把性别添加到数据库中

vuejs中怎么实现按钮组单选

如何在 Android 中设置单选按钮

java单选按钮传值

如何确定 Windows 单选按钮的按钮部分的大小