我一直在研究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);
}
}
这里发生了什么?
答案 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按?您的编程需求将决定这一决定。