gpt4 book ai didi

java - 初始化 jFrame 时出现问题

转载 作者:行者123 更新时间:2023-12-01 17:27:23 25 4
gpt4 key购买 nike

我正在创建一个从 javaSpace 检索的客户端窗口,这是我正在使用的代码。

/**
* Create the frame.
*/
public Client()
{
space = SpaceUtils.getSpace();
if (space == null)
{
System.err.println("Failed to find the javaspace");
System.exit(1);
}

initFrame();
setVisible(true);
processPrintJobs();
}

窗口是在 initFrame() 内部生成的;然后 processPrintJobs 检查是否有任何新消息。如果我注释掉 processPrintJobs() 方法调用,则窗口将正确绘制,但如果该方法调用存在,则窗口仅显示一个空白方 block 。

这就像由于进程被多次检查而没有正确创建窗口一样,这没有任何意义,因为窗口是在 while 循环运行之前创建的。

public void processPrintJobs() 
{

while (true)
{
try
{
Message template = new Message();

if (channel == null)
{
System.out.println("No channel given");
} else
{
template.Channel = channel;
// System.out.println(channel);
template.position = new Integer(getNumber() + 1);

Message msg = (Message) space.read(template, null,
Long.MAX_VALUE);

messageList.append(msg.execute());
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}

最佳答案

这个无限的 while 循环将阻塞 EDT

while (true) 

只需调用

setVisible(true);

不保证JFrame会立即绘制。任何长期存在的进程都应该由 SwingWorker 处理。 .

关于java - 初始化 jFrame 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850139/

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