Java JButton ActionEvent中的If-else条件

Java JButton ActionEvent中的If-else条件,java,string,if-statement,jbutton,jradiobutton,Java,String,If Statement,Jbutton,Jradiobutton,我刚刚将我的进度上传到程序中。请看一看,看看它缺少什么。此外,请忽略其中字符串中的蹩脚笑话。可从以下链接下载: 请注意,我使用NetBeans来轻松地制作程序 编辑: 在读取最内层或最后一行代码后,如何阻止JButton的ActionEvent方法重新迭代读取嵌套if-else条件的第一层 另外,作为一个附加问题,我如何提示系统在一个选项中进行选择,从而在给出一个选项后从另一个选项中进行扩展?显然,我所做的只是将这些字符串块连接在一起,而不是将它们分支出来,因此,一旦显示一个新的代码块并连接到显

我刚刚将我的进度上传到程序中。请看一看,看看它缺少什么。此外,请忽略其中字符串中的蹩脚笑话。可从以下链接下载:

请注意,我使用NetBeans来轻松地制作程序

编辑:

在读取最内层或最后一行代码后,如何阻止JButton的ActionEvent方法重新迭代读取嵌套if-else条件的第一层

另外,作为一个附加问题,我如何提示系统在一个选项中进行选择,从而在给出一个选项后从另一个选项中进行扩展?显然,我所做的只是将这些字符串块连接在一起,而不是将它们分支出来,因此,一旦显示一个新的代码块并连接到显示的前一个代码块,就会出现迭代

片段:

// Strings of text displayed on the JTextArea is shown here
// prompting to choose between two options: example, left or right

jButton1.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
       jButton1actionPerformed(e);
    }
});


private void jButton1actionPerformed(ActionEvent e) 
{                                             
    if(jRadioButton1.isSelected()) 
    {     
       // Display strings of text as response to the choice left
       // Another options to choose from here:, example, up or down
       JTextArea.setText("You've chosen: " );
       JTextArea.append("Now choose between: ");

       if (jRadioButton1.isSelected())
       {
         JTextArea.append("From first choice, choose between: ");
         // stop from here
       }

       else if (jRadioButton2.isSelected())
       {
         //same as above
       }
     }

     if (jRadioButton2.isSelected())
     {
        // Same as above
     }
}

每当您想要清理文本区域时,请使用
JTextField.setText(“”)

关于主要问题-发布一些代码。

我认为,如果您询问如何在达到条件后停止操作,您所需要做的就是在代码中添加一条return语句。例如,如果按下按钮1,则显示消息,然后添加返回语句,这将导致代码退出该方法,而不会到达另一个if语句

也许你想使用散列或列表之类的东西来存储你的选择,每次做出选择时,都将其添加到列表中。然后,通过获取列表中的最后一个元素,您总能找到最后一个选择。我不太清楚你想在这里做什么,但也许这会给你一些想法


我在这里写了一个小程序,有两个单选按钮和一个提交按钮。单击“提交”时,它会根据单选按钮选择更新窗口中的文本

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;


public class MyWindow extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MyWindow frame = new MyWindow();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MyWindow() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        final JRadioButton rdbtnNewRadioButton = new JRadioButton("Choice 1");
        rdbtnNewRadioButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        rdbtnNewRadioButton.setSelected(true);
        rdbtnNewRadioButton.setBounds(5, 7, 424, 23);
        contentPane.add(rdbtnNewRadioButton);

        JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("Choice 2");
        rdbtnNewRadioButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        rdbtnNewRadioButton_1.setBounds(5, 33, 109, 23);
        contentPane.add(rdbtnNewRadioButton_1);

        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(rdbtnNewRadioButton);
        buttonGroup.add(rdbtnNewRadioButton_1);

        final JTextArea textArea = new JTextArea();
        textArea.setBounds(57, 80, 321, 94);
        contentPane.add(textArea);

        JButton btnNewButton = new JButton("Submit");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (rdbtnNewRadioButton.isSelected()) {
                    textArea.setText("Choice 1 Selected.");
                } else {
                    textArea.setText("Choice 2 Selected.");
                }
            }
        });

        btnNewButton.setBounds(135, 212, 89, 23);
        contentPane.add(btnNewButton);
    }
}

查看有关使用按钮的Java教程。特别是看看如何使用单选按钮部分,看看这是否有助于了解如何设计它

在读取最内层或最后一行代码后,如何阻止JButton的ActionEvent方法重新迭代读取嵌套if-else条件的第一层

如果我理解你的要求,这就是
如果。。。否则如果。。。否则如果。。。(等)。。。else
语句。当其中一个条件匹配时,其他块均不执行。因此,看起来您只需要添加
else
s来匹配
if
s。例如:

// Strings of text displayed on the JTextArea is shown here
// prompting to choose between two options: example, left or right

jButton1.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
       jButton1actionPerformed(e);
    }
});


private void jButton1actionPerformed(ActionEvent e) 
{                                             
    if(jRadioButton1.isSelected()) 
    {     
       // Display strings of text as response to the choice left
       // Another options to choose from here:, example, up or down
       JTextArea.setText("You've chosen: " );
       JTextArea.append("Now choose between: ");

       if (jRadioButton1.isSelected())
       {
         JTextArea.append("From first choice, choose between: ");
         // stop from here
       }

       else if (jRadioButton2.isSelected())
       {
         //same as above
       }
     }

     else if (jRadioButton2.isSelected()) // ***** Note the "else" added here.
     {
        // Same as above
     }
}

但是,您的代码有一个问题。如果选择了
jRadioButton1
,为什么要检查两次?在第一个if语句之后,您已经知道它已被选中,无需再次检查。

如果我能理解您的要求

也许这就足够了:

private void jButton1actionPerformed(ActionEvent e) 
{                                             
    if(jRadioButton1.isSelected()) 
    {     
       // Display strings of text as response to the choice left
       // Another options to choose from here:, example, up or down
       JTextArea.setText("You've chosen: " );
       JTextArea.append("Now choose between: ");

//       if (jRadioButton1.isSelected())
//       {
//         JTextArea.append("From first choice, choose between: ");
//        // stop from here
//       }

       else if (jRadioButton2.isSelected())
       {
         //same as above
       }
     }
// The above else if block covers what you are doing bellow
//     if (jRadioButton2.isSelected())
//     {
//        // Same as above
//     }
}
如果您想从两个不同的jRadioButton进行分支,并且考虑到给定的代码,我建议使用4种可能的路径

  • if(jRadioButton1.isSelected()&&jRadioButton2.isSelected())

  • if(jRadioButton1.isSelected())

  • if(jRadioButton2.isSelected())

  • 否则


  • 如何在此处发布屏幕截图?您可能没有足够的代表发布图像。尝试将action performed方法中的代码作为文本(或片段)发布,我不需要清理JTextArea,这样我就可以在上面显示之前显示的文本字符串,而且因为JTextArea有一个垂直滚动条。我对程序设计方面的逻辑感到有点困惑,因为这是我第一次用java编程GUI。jButton的主要思想是它充当触发器,执行从两个jradiobutton中选择的选项:jRadioButton1通过按jButton切换->确定。我认为您只需要第一个if/else即可。如果选择按钮1,则执行此操作;如果选择按钮2,则执行此操作。这样,按钮操作就是您想要的触发事件,这将检查所选按钮以执行操作。介意给我一个如何执行该操作的示例代码吗?我想我是在做同样的事情,尽管不恰当。我可能在语义和逻辑方面遗漏了一些东西,这就是为什么它不起作用的原因。你的代码在做什么,你不希望它做什么?我知道你有一个单选按钮,所以当你点击你的按钮时,你想让它看到哪个单选按钮被选中,并根据它执行操作。我有一个应用程序可以做到这一点,所以我很熟悉希望它能做到这一点。您可以做的另一件事是在单选按钮上放置一个action listener,当它们的值更改时,您可以设置submit button操作所使用的另一个类变量,因此您只需要在其中设置一个变量。感谢提供示例代码。我来看看情况如何。我将保留这个问题,以防有人对此有好的想法。它实际上是一个嵌套的if-else条件或if-else条件中的if-else条件。它是线性设计的,所以结果是这样的。JTextArea上显示的字符串应该根据用户的选择路线而有所不同。请查看我正在开发的这个简单应用程序,以便更好地了解这个程序的用途。上面是它的链接。@dothackj你能把你的代码简化到可以在你的问题中直接发布一个完整的、可编译的程序吗?查看一些关于如何为您的问题创建简单代码的提示。我无法让它变得更简单。事实上,这个想法是非常线性和简单的,我只是碰巧缺少一些必要的代码/语法/想法来实现它。介意给我看一个片段,说明在我的简单程序中逻辑是如何工作的吗?真的,我对Java GUI编程还不熟悉。