2015-03-31 38 views
0

我有一个ActionListener类和具有JCheckBox的Class在2个单独的文件中。 ActionListener会检查复选框是否已选中,并更改复选框旁边的文本,并取消选中或选择适当的复选框。我无法弄清楚的是如何获取复选框的实例来检查它是否被选中。我尝试将e.getSource转换为JCheckBox,但编译器不会允许它。获取从中调用ActionListener的对象的实例

的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()); 
    } 
} 
+2

不要使用'=='或'!='比较字符串。改为使用“equals(...)”或“equalsIgnoreCase(...)”方法。理解'=='检查两个*对象引用*是否相同,而不是你感兴趣的。另一方面,方法检查两个字符串是否具有相同顺序的相同字符,这就是这里很重要。 – 2015-03-31 01:52:16

+0

祝您好打电话:) – yitzih 2015-03-31 02:05:58

回答

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())) { 
    //... 
相关问题