我如何知道是否检查了Jcheckbox?使用GUI

时间:2013-11-29 15:28:18

标签: java user-interface checkbox

你能详细告诉我如何知道是否检查了jcheckbox?方法isSelected对我不起作用,它在运行时给我一个例外

{
    Sandwich = new JButton("Tall");
    contentPane.add(Tall);
    Sandwitch.setBounds(350, 110, 90,40);   //in main
    Sandwitch.addActionListener(this);
}
.....

public void actionPerformed(ActionEvent event) {
    JButton clickedButton = (JButton) event.getSource();

    String  buttonText = clickedButton.getText();
    ..........
    if(clickedButton.getText()=="Sandwitch"){
        if(Ketchup.getState()&&!Garlic.getState()){//

        itm=new Item(""+m+clickedButton.getText(),3.0);
        xyz.addItem(itm);
        textArea.append(" "+clickedButton.getText()+",");
        textArea.append(" "+itm.getPrice()+"\n");
    }
    else if(!Ketchup.isSelected()&&Garlic.isSelected()){//

        ....................
    }

它在运行时给出了这个非常长的异常: Here

你可以帮我解决这个问题吗?

The code you Boann asked me about

1 个答案:

答案 0 :(得分:1)

问题在于:

JCheckBox Ketchup = new JCheckBox();
Ketchup.setText("Ketchup");
Ketchup.setSize(50,25);
contentPane.add(Ketchup);
Ketchup.setBounds(175, 100, 175,25);

JCheckBox Garlic = new JCheckBox();
Garlic.setText("Garlic");
Garlic.setSize(50,25);
contentPane.add(Garlic);
Garlic.setBounds(175, 120, 175,25);

由于分配前面的“JCheckBox”,此代码声明了称为Ketchup和Garlic的局部变量。在方法之外,这些变量不再存在。

同时,ClassName(ProjectInterface?)的私有字段具有相同的名称,但在其他方面不相关。它们保留为空。

将上面的代码移到ClassName构造函数中,并删除赋值前面的“JCheckBox”。所以你会:

private JCheckBox Ketchup;
private JCheckBox Garlic;

public ClassName() {
    Ketchup = new JCheckBox();
    Ketchup.setText("Ketchup");
    Ketchup.setSize(50,25);
    add(Ketchup);
    Ketchup.setBounds(175, 100, 175,25);

    Garlic = new JCheckBox();
    Garlic.setText("Garlic");
    Garlic.setSize(50,25);
    add(Garlic);
    Garlic.setBounds(175, 120, 175,25);
}