Java:WindowAdapter windowClosed方法未运行 [英] Java: WindowAdapter windowClosed method not running

查看:242
本文介绍了Java:WindowAdapter windowClosed方法未运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在一个扩展JFrame的类中运行这个。当我关闭窗口时,我在控制台中看不到 RAN EVENT HANDLER 。这不是主窗口,而且这个窗口的多个实例可以同时存在。

I'm currently running this in a class that extends a JFrame. When I close the window, I don't see RAN EVENT HANDLER in the console. This is not the main window, and more than one instance of this window can exist at the same time.

    this.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosed(WindowEvent e) {
            System.out.println("RAN EVENT HANDLER");
        }
    });

此方法位于一个名为 initialiseEventHandlers()在构造函数中调用,所以我确定代码正在运行。

This method is inside a method called initialiseEventHandlers() which is called in the constructor, so I'm sure the code is running.

我做错了什么?

谢谢!

编辑:这是完整的(总结)代码:

Here's the full (summarised) code:

public class RacesWindow extends JFrame {

private JPanel mainPanel;
private JLabel lblRaceName;
private JTable races;
private DefaultTableModel racesModel;

public RacesWindow() {
    this.lblRaceName = new JLabel("<html><strong>Race: " + race.toString()
            + "</strong></html>");
    initialiseComponents();
    this.setMinimumSize(new Dimension(500, 300));
    this.setMaximumSize(new Dimension(500, 300));
    initialiseEventHandlers();
    formatWindow();
    pack();
    setVisible(true);
}

public void initialiseComponents() {
    mainPanel = new JPanel(new BorderLayout());
    races = new JTable();
    racesModel = new DefaultTableModel();
    races.setModel(racesModel);
}

public void initialiseEventHandlers() {
    System.out.println("EVENTHANDLER CODE IS CALLED"); //for debugging
    this.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosed(WindowEvent e) {
            System.out.println("RAN EVENT HANDLER");
            appManager.removeOpenWindow(race.toString());
        }
    });
}}


public void formatWindow() {
    mainPanel.add(lblRaceName, BorderLayout.NORTH);
    mainPanel.add(new JScrollPane(races), BorderLayout.CENTER);
    mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
    this.add(mainPanel);
}
}


推荐答案

发现我使用错误的方法: windowClosed()。我应该使用 windowClosing()

I found out I was using the wrong method: windowClosed(). I should use windowClosing()!

这篇关于Java:WindowAdapter windowClosed方法未运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆