gpt4 book ai didi

java - 以编程方式关闭 JOptionPane

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:49 25 4
gpt4 key购买 nike

我正在从事一个项目,我想在其中以编程方式关闭通用 JOptionPane(通过不实际单击任何按钮)。当计时器到期时,我想关闭任何可能打开的 JOptionPane 并将用户踢回到我的程序的登录屏幕。我可以很好地踢回用户,但 JOptionPane 仍然存在,除非我实际单击它上面的按钮。

我看过很多网站都没有这样的运气。似乎不可能在 JOptionPane 的“红色 X”上调用 doClick() 方法,并且使用 JOptionpane.getRootFrame().dispose() 不起作用。

最佳答案

从技术上讲,您可以遍历应用程序的所有窗口,检查它们是否属于 JDialog 类型并具有 JOptionPane 类型的子项,如果是,则释放对话框:

Action showOptionPane = new AbstractAction("show me pane!") {

@Override
public void actionPerformed(ActionEvent e) {
createCloseTimer(3).start();
JOptionPane.showMessageDialog((Component) e.getSource(), "nothing to do!");
}

private Timer createCloseTimer(int seconds) {
ActionListener close = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Window[] windows = Window.getWindows();
for (Window window : windows) {
if (window instanceof JDialog) {
JDialog dialog = (JDialog) window;
if (dialog.getContentPane().getComponentCount() == 1
&& dialog.getContentPane().getComponent(0) instanceof JOptionPane){
dialog.dispose();
}
}
}

}

};
Timer t = new Timer(seconds * 1000, close);
t.setRepeats(false);
return t;
}
};

关于java - 以编程方式关闭 JOptionPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com