JButton.isSelected()if语句没有改变JOptionPane变量

时间:2017-04-13 03:47:51

标签: java swing jbutton

我一直在研究JPanel测验类型的程序,我希望使用带有if语句的isSelected(),一旦完成测验,就会根据所选的选项在JOptionPane上显示不同的String和ImageIcon。编译时没有错误;但是当我运行测验时,JOptionPane会出现但仍然是空白的。

我已经将String和ImageIcon变量声明为:

public class MBTIgame1
{
//some JPanel stuff omitted
public static ImageIcon cart;
public static String desc;

我的if语句如下所示:

if (button1.isSelected() && button5.isSelected() && button9.isSelected())
    {String desc = new String("<html>INTJ<br>Ni: Introverted Intuition<br> Te: Extroverted Thinking<br> Fi: Extroverted Intuition<br> Se: Extroverted Sensing<br>");
     ImageIcon cart = new ImageIcon("intj.png");};

我的JOptionPane结果显示如下:

class AddButton10Listener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        responses[4] = 2;
        JOptionPane.showMessageDialog(null, desc, "Results", JOptionPane.PLAIN_MESSAGE, cart);
    }
}

这里发生了什么?

2 个答案:

答案 0 :(得分:3)

基于......

if (button1.isSelected() && button5.isSelected() && button9.isSelected( {
    String desc = new String("<html>INTJ<br>Ni: Introverted Intuition<br> Te: Extroverted Thinking<br> Fi: Extroverted Intuition<br> Se: Extroverted Sensing<br>");
    ImageIcon cart = new ImageIcon("intj.png");
};

desc cart被定义为局部变量,因此这里使用的变量......

class AddButton10Listener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        responses[4] = 2;
        JOptionPane.showMessageDialog(null, desc, "Results", JOptionPane.PLAIN_MESSAGE, cart);
    }
}

可能是null,或者仍然是初始化时应用于它们的默认值

答案 1 :(得分:3)

虽然所有来自AbstractButton的类都有一个isSelected()方法,包括JButton类,但这个方法在与 selectable 的按钮一起使用时才有意义 - JToggleButton,JRadioButton和JCheckBox。这三个类有两种不同的状态,选择状态和非选择状态,这些状态很容易看到,并且可以使用ItemListener轻松监听。 JButton更适合使用ActionListener来监听压力。

所以你必须决定 - 你想使用3个可选按钮之一,JToggleButton,JRadioButton或JCheckBox,并使用ItemListener监听选择状态的变化,或者你想使用JButton并监听按钮使用ActionListener按?您的编程需求将决定这一决定。