我有一个ActionListener类和一个带有JCheckBox的Class,分别位于两个文件中。 ActionListener检查复选框是否已选中并更改复选框旁边的文本,并取消选择或选中相应的复选框。我无法弄清楚如何获取复选框的实例来检查它是否被选中。我尝试将e.getSource转换为JCheckBox,但编译器不允许它。
ActionListener类:
public MyAL extends ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand() == MyClass.ACT_CMD_!)
{
//if (checkbox is selected)
//set checkbox text to "I'm Not Selected";
//deselect the checkbox;
//else
//set checkbox text to "I'm Selected";
//select the checkbox;
}
}
}
具有JCheckBox的类:
public class MyClass
{
final static ACT_CMD_1 = "CHECK BOX";
JCheckBox cb;
MyClass()
{
cb= new JCheckBox("I'm Not Selected");
cb.addActionCommand(MyClass.ACT_CMD_1);
cb.addActionListener(new MyAL());
}
}
答案 0 :(得分:3)
您可以从ActionEvent
本身获取事件的来源,例如......
Object obj = e.getSource();
if (obj instanceof JCheckBox) {
JCheckBox cb = (JCheckBox)obj;
}
此外,请勿使用==
来比较Java中的String
,而应使用String#equals
或String#equalsIgnoreCase
if (ACT_CMD_1.equals(e.getActionCommand())) {
//...