gpt4 book ai didi

Java Swing弹出窗口失去焦点并且不重新绘制

转载 作者:行者123 更新时间:2023-11-30 09:53:56 29 4
gpt4 key购买 nike

我有一个带有浏览按钮的简单 Java Swing GUI 窗体。单击浏览按钮时会创建一个新的 JFileChooser。

但是,如果您在窗口打开后立即单击浏览,文件选择器窗口似乎失去了焦点,显示了它后面的父窗口,但它拒绝重新绘制自己。我必须将它拖出屏幕并再次打开才能使其恢复正常。

我已尝试将我的代码简化为仍然存在问题的最简单版本。 (它只是制作了一个非常大的浏览按钮。

public class FormTest extends JFrame
{
private final int width = 490;
private final int height = 400;

private JPanel outerPanel;

private static FormTest myTest;

public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch( Exception e )
{
e.printStackTrace();
}

myTest = new FormTest();
myTest.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
myTest.setResizable(false);
myTest.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
closeWindow();
}
});
myTest.setVisible(true);
}

public FormTest()
{
super("Convert Ratings");

this.setSize(width, height);

initComponents();
}

private void initComponents()
{
outerPanel = new JPanel();
outerPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 2, 0));
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));

outerPanel.add(Box.createRigidArea(new Dimension(0, 5)));

JButton myButton = new JButton("browse");
myButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser fileChooser = new JFileChooser();

fileChooser.showOpenDialog(myTest);
}
});
outerPanel.add(myButton);

this.add(outerPanel);
}

private static void closeWindow()
{
int result = JOptionPane.showConfirmDialog(myTest, "Are you sure you want to close the application?",
"Question", JOptionPane.YES_NO_OPTION);

if( result == JOptionPane.YES_OPTION )
{
System.exit(0);
}
}
}

在此示例中,必须在窗口打开后立即单击浏览按钮,大约 10 秒后该错误会自行显示。

如有任何帮助或建议,我们将不胜感激。

谢谢,

北京

最佳答案

由于您的问题已更改,我将添加另一个答案。看起来您要使用 CardLayout .

您的应用程序无响应可能是由于重新绘制/隐藏/取消隐藏面板的某些不正确的逻辑造成的。

这是 Oracle 的使用教程 http://download.oracle.com/javase/tutorial/uiswing/layout/card.html

关于Java Swing弹出窗口失去焦点并且不重新绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601972/

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