我正在为我正在开发的游戏编写一个简单的 GUI,但我遇到了 ActionListener 方法的问题。这个按钮应该能够在使用不同的方法添加其他组件之前调用 removeAll 方法,但是经过一些测试(和冻结的 GUI)我意识到当按钮本身从容器中移除时,它不再能够访问它.这是一个演示问题的模型:
JFrame frame = new JFrame("GUI example");
JButton exitButton = new JButton("Exit");
frame.add(exitButton);
exitButton.addActionListener(e -> {
frame.removeAll()
// methods adding other components (which aren't being reached)
});
有没有办法在转义 ActionListener actionPerformed() 方法的同时使用自定义 ActionListeners 向框架发送命令?
我尝试通过中间方法调用该方法,但没有成功。
我不确定框架上的 ComponentListener 是否是一个好的解决方案,或者如何最好地实现它。我多次听说您不应该向 JFrame 组件添加监听器。
一个简单的方法是使用
frame.getComponents()
获取所有组件,然后迭代它们,如果它们不是 exitButton
则执行 frame.remove(component)
。然后在动作侦听器的末尾,您可以删除按钮本身。