我是Java的新手,我对ActionEvent类感到困惑。
我的印象是,要使用一个类,你必须创建一个新对象,例如:
SomeClass aClass = new SomeClass();但在这段代码中:
private class theHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
Event.getSource()
// etc...
}
}为什么你不需要:
ActionEvent event = new ActionEvent();事件将成为ActionEvent类的实例,而无需显式通知它。很抱歉这是一个愚蠢的问题,我在自学Java,这让我很困惑。
发布于 2014-06-09 06:11:50
ActionEvent 是在某个地方创建的,但它并不是由您显式创建的。相反,它是在JButton的代码中创建的(实际上代码在AbstractButton类中,这是JButton的父类),用于通知所有ActionListeners侦听器已附加到它。如果需要,您可以查看源文件以查看详细信息。
发布于 2014-06-09 06:27:11
当您在Java语言中使用implements时,您所做的就是使用。接口要求在代码中实现特定的方法,并提供一种方法来确保实现特定接口的新类具有可调用的方法。
因此,在您的示例中:
private class theHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
event.getSource()
// etc...
}
}ActionListener接口是由theHandler实现的,因此actionPerformed(ActionEvent event)方法需要由您的类实现。这里没有创建显式的ActionEvent event = new ActionEvent();,因为ActionEvent实际上是作为参数传递给actionPerformed的,否则是在其他地方创建的。
具体到您的示例,您还可以执行以下操作,而不是在类中使用implements关键字:
public class theHandler {
public theHandler() {
JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do some stuff here
}
});
}
}发布于 2014-06-09 06:18:40
这真的很简单,有一种叫做静态方法的东西。这些方法可以在类中使用,而不需要创建对象。
比如Math类和它的所有函数fx。静态方法可能如下所示:
public class HiClass {
public static String sayHi() {
return "Hi!";
}
}然后,您可以在某些上下文中使用它,如下所示:
System.out.println( HiClass.sayHi() );这将打印出该方法在控制台中返回的字符串。
你可能会问“为什么我不能让我的类中的所有方法都是静态的呢?”原因有很多,我能想到的主要原因之一是,当你编程时,你总是试图将责任限制在有意义的类上,这样代码就更容易管理,更容易随着程序的增长而改变。
这并不特定于你提到的上下文,但在我看来,你真正的问题是如何在不创建对象的情况下使用方法?
希望它能回答你的问题?
https://stackoverflow.com/questions/24111375
复制相似问题