任何人都可以向我解释为什么我们会通过对象将item1
,2
,3
和passwordField
传递给另一个类(处理程序)?什么是getsource
?得到命令?为什么我们在这里创建一个字符串?
thehandler handler =new thehandler();
item1.addActionListener(handler);
item2.addActionListener(handler);
item3.addActionListener(handler);
passwordField.addActionListener(handler);
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);
}
}
答案 0 :(得分:1)
任何人都可以解释为什么我们通过一个对象将item1,2,3和passwrodFiled传递给另一个类(处理程序)
这是相当模糊的,但基本上,这允许你做的是可以处理上下文要求的插件功能。也就是说,您不需要扩展和覆盖这些类的方法来改变它们的行为,您可以简单地提供一个可以替代使用的回调。
什么是getsource和get命令?为什么我们在这里创建一个字符串?
getSource
方法返回创建此事件的Object
引用,这很有用,如您的示例所示,您希望事件触发器有更多来源。
getActionCommand
方法返回关联的String
,表示可能的"命令"。其核心原因是,您可能没有对创建事件的原始对象的引用和/或您可能有多个不同的对象正在创建ActionEvent
,但是想要触发相同的逻辑流。
示例中的actionPerformed
方法是创建String
JOptionPane
消息