java - 您必须添加未实现的方法吗?

标签 java swing windowlistener

我正在尝试向 JFrame 关闭操作添加一个监听器:

addWindowListener(new WindowListener() {
    @Override
    public void windowClosing(WindowEvent e) {
        setVisible(false);
    }
});

问题是 Eclipse 一直告诉我必须“添加未实现的方法”,我假设它是从 WindowListener 获取的。不过,我很困惑,如果您只需要重写一个方法,为什么还需要实现所有这些其他方法?如果我确实添加了所有其他方法,但不要在其中添加任何内容,例如

@Override
public void windowActivated(WindowEvent e) {}

这个方法的默认行为会丢失吗?或者只有当我在方法中写一些东西时它才会被覆盖?

最佳答案

如果你实现一个接口(interface),你必须实现所有的方法。这也适用于匿名类。

使用WindowAdapter而不是实现 WindowListener

addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        setVisible(false);
    }
});

WindowAdapter 是一个使用空方法实现 WindowListener 的类,您可以只覆盖需要的方法。

PS: swing 中还有用于其他事件的其他适配器。例如。 MouseAdapter , KeyAdapter

关于java - 您必须添加未实现的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588663/

相关文章:

java - 使用 hibernate 时的 DAO 模式

java - 在 json 中改造 boolean 值或数组

java - 如何获得对当前显示的 Java Swing JDialog 框的引用?

java - 我如何将 Java 中的二维数组打印到 Swing/JOptionPane 中的窗口

java - 为什么只有 windowGainedFocus() 不起作用?

JDialog 中的 javax.swing.Timer 在关闭 JDialog 时不会停止

java - 在Android项目中使用ListActivity实现onItemClickedListener?

java - CDI bean 中注入(inject)的 Conversation 接口(interface)是否需要 getter?

java - 如何将列表传递到 Swing 中的初始框架

Java Swing 为 EXIT_ON_CLOSE 添加 Action 监听器