Java 如何关闭活动JFrame
我试图找到一种方法,可以关闭活动的JFrame 我无法使用Java 如何关闭活动JFrame,java,swing,user-interface,jframe,dispose,Java,Swing,User Interface,Jframe,Dispose,我试图找到一种方法,可以关闭活动的JFrame 我无法使用frame.dispose(),因为我在工具栏类中声明操作侦听器,并且我要关闭的帧不是静态的,而是在运行时声明的 我试过使用: java.awt.Window win[] = java.awt.Window.getWindows(); for(int i=0;i<win.length;i++){ win[i].dispose(); } java.awt.windowwin[]=java.awt.Window.getWindo
frame.dispose()代码>,因为我在工具栏类中声明操作侦听器,并且我要关闭的帧不是静态的,而是在运行时声明的
我试过使用:
java.awt.Window win[] = java.awt.Window.getWindows();
for(int i=0;i<win.length;i++){
win[i].dispose();
}
java.awt.windowwin[]=java.awt.Window.getWindows();
对于(int i=0;i如果尝试获取操作事件源的窗口祖先会发生什么情况?即
@Override
public void actionPerformed(ActionEvent actionEvent) {
Component comp = (Component) actionEvent.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
如果源不是一个组件或者它不包含在感兴趣的顶级窗口中,那么这将不起作用
关于:
对于我来说,要完全重现我的问题,需要发布大量不符合MCVE原则的代码
我敢打赌,只要你努力一点,你就可以创建并发布一些接近的东西。如果你试图获取动作事件源的窗口祖先,会发生什么呢
@Override
public void actionPerformed(ActionEvent actionEvent) {
Component comp = (Component) actionEvent.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
如果源不是一个组件或者它不包含在感兴趣的顶级窗口中,那么这将不起作用
关于:
对于我来说,要完全重现我的问题,需要发布大量不符合MCVE原则的代码
我敢打赌,只要你努力一点,你就可以创建并发布一些接近的东西。如果你试图获取动作事件源的窗口祖先,会发生什么呢
@Override
public void actionPerformed(ActionEvent actionEvent) {
Component comp = (Component) actionEvent.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
如果源不是一个组件或者它不包含在感兴趣的顶级窗口中,那么这将不起作用
关于:
对于我来说,要完全重现我的问题,需要发布大量不符合MCVE原则的代码
我敢打赌,只要你努力一点,你就可以创建并发布一些接近的东西。如果你试图获取动作事件源的窗口祖先,会发生什么呢
@Override
public void actionPerformed(ActionEvent actionEvent) {
Component comp = (Component) actionEvent.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
如果源不是一个组件或者它不包含在感兴趣的顶级窗口中,那么这将不起作用
关于:
对于我来说,要完全重现我的问题,需要发布大量不符合MCVE原则的代码
我敢打赌,只要你付出一点努力,你就可以创建并发布一些接近的东西。当你声明你的JFrames时,如果你不能使用static,请将它们声明为final:
final JFrame f = new JFrame();
这将解决问题。当您声明JFrames时,如果无法使用静态,请将其声明为最终:
final JFrame f = new JFrame();
这将解决问题。当您声明JFrames时,如果无法使用静态,请将其声明为最终:
final JFrame f = new JFrame();
这将解决问题。当您声明JFrames时,如果无法使用静态,请将其声明为最终:
final JFrame f = new JFrame();
这将解决问题
我希望有人能知道一种更简单可靠的关闭活动框架的方法
在循环中,您可以添加:
if (window.isActive())
// do something
或者更简单的方法是:
Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
另外,假设您的活动窗口是JFrame,而不是使用window.dispose()
,我使用了如下代码:
WindowEvent windowClosing = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING);
frame.dispatchEvent(windowClosing);
这将模拟用户单击“关闭”按钮,这意味着您添加到框架中的任何WindowListener都将被执行。有关更多信息和想法,请参阅
我希望有人能知道一种更简单可靠的关闭活动框架的方法
在循环中,您可以添加:
if (window.isActive())
// do something
或者更简单的方法是:
Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
另外,假设您的活动窗口是JFrame,而不是使用window.dispose()
,我使用了如下代码:
WindowEvent windowClosing = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING);
frame.dispatchEvent(windowClosing);
这将模拟用户单击“关闭”按钮,这意味着您添加到框架中的任何WindowListener都将被执行。有关更多信息和想法,请参阅
我希望有人能知道一种更简单可靠的关闭活动框架的方法
在循环中,您可以添加:
if (window.isActive())
// do something
或者更简单的方法是:
Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
另外,假设您的活动窗口是JFrame,而不是使用window.dispose()
,我使用了如下代码:
WindowEvent windowClosing = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING);
frame.dispatchEvent(windowClosing);
这将模拟用户单击“关闭”按钮,这意味着您添加到框架中的任何WindowListener都将被执行。有关更多信息和想法,请参阅
我希望有人能知道一种更简单可靠的关闭活动框架的方法
在循环中,您可以添加:
if (window.isActive())
// do something
或者更简单的方法是:
Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
另外,假设您的活动窗口是JFrame,而不是使用window.dispose()
,我使用了如下代码:
WindowEvent windowClosing = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING);
frame.dispatchEvent(windowClosing);
这将模拟用户单击“关闭”按钮,这意味着您添加到框架中的任何WindowListener都将被执行。有关更多信息和想法,请参阅。我在工具栏类中声明操作侦听器,并且我要关闭的框架不是静态的,而是在运行时声明的。请参阅。我在工具栏类中声明操作侦听器,并且我要关闭的框架不是静态的,并且在运行时声明。请参阅。我在工具栏类中声明动作侦听器,并且我要关闭的帧不是静态的,并且在运行时声明。请参阅。我在工具栏类中声明动作侦听器,并且我要关闭的帧不是静态的,并且在运行时声明。请参阅。