我有一个包含表单上的单选按钮的swing应用程序.ButtonGroup但是,我看到了可用的方法,我似乎无法获得所选的名称JRadioButton.这是我到目前为止所能说的:
从ButtonGroup,我可以执行一个getSelection()返回ButtonModel.从那里,我可以执行一个getActionCommand,但似乎并不总是有效.我尝试了不同的测试并获得了不可预测的结果.
另外ButtonGroup,我可以从中获得枚举getElements().但是,然后我必须遍历每个按钮只是为了检查它是否是所选择的按钮.
有没有更简单的方法来找出选择了哪个按钮?我正在Java 1.3.1和Swing中编程.
Ren*_*hya 72
我遇到了类似的问题并解决了这个问题:
import java.util.Enumeration;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
public class GroupButtonUtils {
public String getSelectedButtonText(ButtonGroup buttonGroup) {
for (Enumeration<AbstractButton> buttons = buttonGroup.getElements(); buttons.hasMoreElements();) {
AbstractButton button = buttons.nextElement();
if (button.isSelected()) {
return button.getText();
}
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
它返回所选按钮的文本.
Dra*_*mon 40
我会循环通过你的JRadioButtons电话isSelected().如果你真的想离开,ButtonGroup你只能去模特.您可以将模型与按钮匹配,但如果您可以访问按钮,为什么不直接使用它们?
小智 27
你必须添加setActionCommand到JRadioButton那时只是做:
String entree = entreeGroup.getSelection().getActionCommand();
Run Code Online (Sandbox Code Playgroud)
例:
java = new JRadioButton("Java");
java.setActionCommand("Java");
c = new JRadioButton("C/C++");
c.setActionCommand("c");
System.out.println("Selected Radio Button: " +
buttonGroup.getSelection().getActionCommand());
Run Code Online (Sandbox Code Playgroud)
我建议直接采用 Swing 中的模型方法。将组件放入面板和布局管理器后,甚至不必费心保留对它的特定引用。
如果你真的想要这个小部件,那么你可以用 测试每个小部件isSelected,或者维护一个Map<ButtonModel,JRadioButton>.
您可以将actionAction和放到每个单选按钮(字符串)中。
this.jButton1.setActionCommand("dog");
this.jButton2.setActionCommand("cat");
this.jButton3.setActionCommand("bird");
Run Code Online (Sandbox Code Playgroud)
假设它们已经在ButtonGroup(在本例中为state_group)中,则可以像下面这样获得所选的单选按钮:
String selection = this.state_group.getSelection().getActionCommand();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助