获取调用 ActionListener 的对象的实例
Get instance of an object from which an ActionListener is called
我在 2 个单独的文件中有一个 ActionListener class 和一个带有 JCheckBox 的 Class。 ActionListener 检查复选框是否被选中并更改复选框旁边的文本并适当地取消选择或选择复选框。我想不通的是如何获取复选框的实例以检查它是否被选中。我尝试将 e.getSource 强制转换为 JCheckBox 但编译器不允许。
ActionListener Class:
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;
}
}
}
Class 有一个 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());
}
}
您可以从 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())) {
//...
我在 2 个单独的文件中有一个 ActionListener class 和一个带有 JCheckBox 的 Class。 ActionListener 检查复选框是否被选中并更改复选框旁边的文本并适当地取消选择或选择复选框。我想不通的是如何获取复选框的实例以检查它是否被选中。我尝试将 e.getSource 强制转换为 JCheckBox 但编译器不允许。
ActionListener Class:
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;
}
}
}
Class 有一个 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());
}
}
您可以从 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())) {
//...