获取从中调用ActionListener的对象的实例

时间:2015-03-31 01:45:25

标签: java swing checkbox

我有一个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());
    }
}

1 个答案:

答案 0 :(得分:3)

您可以从ActionEvent本身获取事件的来源,例如......

Object obj = e.getSource();
if (obj instanceof JCheckBox) {
    JCheckBox cb = (JCheckBox)obj;
}

此外,请勿使用==来比较Java中的String,而应使用String#equalsString#equalsIgnoreCase

if (ACT_CMD_1.equals(e.getActionCommand())) {
    //...