gpt4 book ai didi

java - RadioButtons 和 boolean 值连接出现问题

转载 作者:行者123 更新时间:2023-12-02 07:23:59 25 4
gpt4 key购买 nike

嗯,这很奇怪。顺便说一句,我不擅长使用单选按钮。但我在 netbeans 中制作了一个 JPanel 程序,其中包含一个 RadioButton。您使用 JTextFields 输入所有这些信息(没问题),最后我有一个 JButton,您可以单击所需的选择。然后我有一个 JButton,它获取所有信息并输出它。对于RadioButton,我首先输入通常的:

    family = new JRadioButton("Family", true);
friend = new JRadioButton("Friend");
relative = new JRadioButton("Relative");
friendFriend = new JRadioButton("Friend of Friend");

ButtonGroup group = new ButtonGroup();
group.add (friend);
group.add (family);
group.add (relative);
group.add (friendFriend);

(我不确定我是否需要 RadioButtons 的监听器,但无论如何我的程序似乎仍然“崩溃”)。

然后我为 JButton 提供了一个操作监听器,其中包括所有文本字段和单选按钮。但RadioButton 是问题所在。

在 Action 监听器中我有: 对象源 = event.getSource();

        if (source == family)
relation1 = true;
else
if (source == friend)
relation2 = true;
else
if(source == relative)
relation3 = true;
else
if(source == friendFriend)
relation4 = true;

然后我做了一个关系类:公共(public)类关系{ 私有(private) boolean 数组Family,arrayFriend,arrayRelative,arrayFriendFriend;

public Relation(boolean relation1, boolean relation2, boolean relation3,
boolean relation4)
{
this.arrayFamily = relation1;
this.arrayFriend = relation2;
this.arrayRelative = relation3;
this.arrayFriendFriend = relation4;
}

public String relations ()
{
String relationship = null;

if(arrayFamily && !arrayFriend && !arrayRelative && !arrayFriendFriend == true)
{
relationship = "Family";
}
else
if(arrayFriend && !arrayFamily && !arrayRelative &&
!arrayFriendFriend == true)
{
relationship = "Friend";
}
else
if(arrayRelative && !arrayFamily && !arrayFriend &&
!arrayFriendFriend == true)
{
relationship = "Relative";
}
else
if(arrayFriendFriend && !arrayFamily && !arrayFriend &&
!arrayRelative == true)
{
relationship = "Friend of a Friend";
}
return relationship;
}

}

最后回到 Action 监听器,我实现了这个类:

        Relation relationship = new Relation(relation1, relation2, relation3
, relation4);

String arrayRelation = relationship.relations();

我最后将 arrayRelation 包含在数组中,但该数组工作正常。

我的问题是我的RadioButtons 数组的输出一直显示为“null”(最有可能是因为此代码:Stringlation = null;)。我认为这意味着我的 if else 语句都没有得到满足,我真的不知道为什么。另外需要指出的是,如果我单击“提交”而不单击任何单选按钮(该按钮保留在“家庭”上),则它会显示为 null。如果我单击一个按钮,它可以完美地读取我想要的字符串。但是,如果我随后单击另一个按钮并再次单击“提交”,则该字符串将返回“null”。

我知道它很长,但我真的很感激任何帮助,因为我迷路了。

附注我的代码的某些部分是重复的,因为我正在尝试解决问题。

最佳答案

我建议你单独处理你的 Action 事件,例如:

family.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
familyActionPerformed(evt);
}
});

然后实现 familyActionPerformed(evt):

private void familyActionPerformed(java.awt.event.ActionEvent evt) {
// every click on family radio button causes the code here to be executed
relation1 = true;
}

还为您单击的按钮编写一个事件处理程序,如下所示:

submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
// Here test the state of each radio button
relation1 = family.isSelected();
relation2 = friend.isSelected();
relation3 = relative.isSelected();
relation4 = friendFriend.isSelected();
}

更多编辑:使用 NetBeans 进行的操作应该非常简单。以下教程可以帮助您解决所有问题:

  1. Tutorial 1

  2. Tutorial 2

<小时/>

我再次解释一下解决方案:

以“family”按钮为例,在创建并初始化 GUI 组件的构造函数中执行以下操作:

JRadioButton family = new JRadioButton();
// do any other thing you want to do to this button and finally..
family.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
familyActionPerformed(evt);
}
});

JButton submit = new JButton("Submit");
submit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
submitActionPerformed(evt);
}
});

然后在某处创建这些方法:

private void familyActionPerformed(java.awt.event.ActionEvent evt){
// each time family is selected, you code processes the lines below:
...
}

private void submiteActionPerformed(java.awt.event.ActionEvent evt){
relation1 = family.isSelected();
relation2 = friend.isSelected();
relation3 = relative.isSelected();
relation4 = friendFriend.isSelected();
}

对其余单选按钮执行类似的操作。

关于java - RadioButtons 和 boolean 值连接出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com