gpt4 book ai didi

java - 关闭 1 个 jframe,其中多个 jframe 处于 Activity 状态,无法正常工作

转载 作者:行者123 更新时间:2023-12-01 14:43:16 26 4
gpt4 key购买 nike

我的程序在屏幕和主框架上显示一些窗口(jframe 和 jpanel)。当用户选择删除主框架中这些窗口之一的选项时,它应该关闭所选窗口。

我将这些窗口放在一个数组中。当用户选择要关闭的窗口时,它将从数组中删除该 jframe 和 jpanel,并且它应该关闭该 jframe,但事实并非如此。没有显示任何错误,当我再次运行该程序时,一切都按预期进行:未显示已删除的帧。我的结论是我无法正确关闭 jframe,并且程序的其余部分都很好。

我已经尝试过:

windows[Frame_to_close].setDefaultCloseOperation(windows[Frame_to_close].DISPOSE_ON_CLOSE );

windows[Frame_to_close].setVisible(false); 
windows[Frame_to_close].dispose();

关闭窗口时我做错了什么吗?还有其他方法可以关闭窗口(Jframe 和 Jpanel)吗?

最佳答案

用户将如何选择要关闭的窗口?使用下面的代码,您可以通过按按钮关闭窗口或直接关闭窗口(在这种情况下,框架不会从列表中删除):

private void createManyFrames() {
final JFrame mainFrame = new JFrame("Stack Overflow: closing frames");
mainFrame.setBounds(100, 100, 240, 600);
mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
mainFrame.getContentPane().setLayout(new FlowLayout());
final List<JFrame> frames = initializeFrames(Arrays.asList("one", "two", "three"));
for (final JFrame frame : frames) {
final JButton button = new JButton(frame.getTitle());
mainFrame.getContentPane().add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
frame.dispose();
frames.remove(frame);
}
});
frame.setVisible(true);
}
mainFrame.setVisible(true);
}

private List<JFrame> initializeFrames(final List<String> frameNames) {
final List<JFrame> frames = new ArrayList<JFrame>();
for (final String frameName : frameNames) {
final JFrame frame = new JFrame(frameName);
frame.setBounds(480, 120 * (1 + frames.size()), 200, 100);
final JPanel panel = new JPanel();
panel.add(new JLabel("Label in panel in frame " + frameName + "."));
frame.getContentPane().add(panel);
frames.add(frame);
}
return frames;
}

关于java - 关闭 1 个 jframe,其中多个 jframe 处于 Activity 状态,无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723230/

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