动作监听器和动作事件

时间:2014-05-26 03:05:58

标签: java swing events awt action

任何人都可以向我解释为什么我们会通过对象将item123passwordField传递给另一个类(处理程序)?什么是getsource?得到命令?为什么我们在这里创建一个字符串?

thehandler handler =new thehandler();

item1.addActionListener(handler);
item2.addActionListener(handler);
item3.addActionListener(handler);
passwordField.addActionListener(handler);

thehandler

private class thehandler implements ActionListener{
    public void actionPerformed(ActionEvent event){
        String string="";

    if(event.getSource()==item1)
        string=String.format("field 1: %s",event.getActionCommand());
    else if(event.getSource()==item2)
        string=String.format("field 2: %s",event.getActionCommand());
    else if(event.getSource()==item3)
        string=String.format("field 3: %s",event.getActionCommand());
    else if (event.getSource()==passwordField)
        string=String.format("passwordField: %s",event.getActionCommand());
    JOptionPane.showMessageDialog(null,string);
    }
}

1 个答案:

答案 0 :(得分:1)

  

任何人都可以解释为什么我们通过一个对象将item1,2,3和passwrodFiled传递给另一个类(处理程序)

这是相当模糊的,但基本上,这允许你做的是可以处理上下文要求的插件功能。也就是说,您不需要扩展和覆盖这些类的方法来改变它们的行为,您可以简单地提供一个可以替代使用的回调。

  

什么是getsource和get命令?为什么我们在这里创建一个字符串?

getSource方法返回创建此事件的Object引用,这很有用,如您的示例所示,您希望事件触发器有更多来源。

getActionCommand方法返回关联的String,表示可能的"命令"。其核心原因是,您可能没有对创建事件的原始对象的引用和/或您可能有多个不同的对象正在创建ActionEvent,但是想要触发相同的逻辑流。

示例中的actionPerformed方法是创建String

显示的JOptionPane消息