gpt4 book ai didi

java - 非模态 JDialog 不显示内容?

转载 作者:行者123 更新时间:2023-11-30 04:54:46 25 4
gpt4 key购买 nike

我正在构建一个从客户端接收套接字连接的服务器程序。当程序启动服务器时,我想显示一个对话框,在等待时显示“正在等待连接...”。收到连接后,我想以编程方式关闭窗口。由于我不想在等待套接字连接时阻止程序的执行,因此我使用了非模式对话框来显示消息。这是可行的,只是对话框不显示我想要的文本。对话框标题显示正常,但消息 Pane 则不然。为什么是这样?我尝试了几种不同的方法来实现此目的,包括下面的代码,但均无济于事。

public class AboutDialog extends JDialog implements ActionListener 
{
public AboutDialog(JFrame parent, String title, String message)
{
super(parent, title, false);

if (parent != null)
{
Dimension parentSize = parent.getSize();
Point p = parent.getLocation();
setLocation(p.x + parentSize.width / 4, p.y + parentSize.height / 4);
}

JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
setVisible(false);
dispose();
}
}

以防万一我的解释不清楚,我将“等待连接...”作为消息参数传递到 AboutDialog 构造函数中。感谢您的指导!

最佳答案

您可能没有在事件调度线程中打开(和关闭)对话框(在主/监听线程中使用 SwingUtilities.invokeLater())。

也就是说,为服务器应用程序提供 GUI 可能不是一个好主意。服务器应用程序经常在 headless 服务器上运行,并且经常作为服务/守护进程启动。使用日志文件可能比使用 GUI 更好。

关于java - 非模态 JDialog 不显示内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891015/

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