Java 如何知道是否使用GUI检查了Jcheckbox
您能详细告诉我如何知道jcheckbox是否已检查?方法isSelected对我不起作用,它在运行时给了我一个异常Java 如何知道是否使用GUI检查了Jcheckbox,java,user-interface,checkbox,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 actionPerform
{
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()){//
....................
}
它在运行时会出现以下很长的异常:
你能帮我解决这个问题吗
问题出在这里:
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和garmal的局部变量。在方法之外,这些变量不再存在
同时,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);
}
另外,在比较OP的字符串时,请reming OP来更改这个讨厌的
=
。注意:我不确定OP的真正类名是什么。在堆栈跟踪中,它是“ClassName”或“ProjectInterface”。在发布的代码中,它是小写的“className”。我实际上是在文章中提到上面的代码,而不是链接:)非常感谢您的帮助,但同样的例外仍然出现:(问题可能是我使用isSelected()方法的方式有问题吗?或者它不是正确的方法?我在这里将其更改为className,以便于阅读