gpt4 book ai didi

java - Swing 更新谜题

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

我有一个 Jtree,其中的节点代表用户可以调用和查看的图像。有时加载图像需要四到五秒的时间。理想情况下,我希望在用户等待时显示等待光标,并选择树中选择的节点。然而,我发现用户单击该节点,似乎没有发生任何事情,然后出现图像,然后选择该节点(等待光标永远不会出现或更可能出现非常短暂,然后立即消失。我'我尝试重新绘制树和小程序,以尝试强制行为按照我想要的顺序发生。到目前为止,我还没有任何运气。有什么建议吗?以下是一些给我带来问题的 Swing 代码的一部分:

 thisApplet.setCursor(new Cursor(Cursor.WAIT_CURSOR));
selectdocumentTreeLeaf(); // a JTree with nodes representing images
tree.repaint();
thisApplet.repaint();
tree.setEnabled(false); //disabled so users don't keep clicking on it.
result = createImage(queue.q[pointer].currentPage); //where the image is fetched
thisApplet.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
<小时/>

最佳答案

我认为佩斯是有钱的。使用后台线程(例如 SwingWorker),您的问题将得到解决。请查看Concurrency in Swing有关 EDT 和线程问题的更多详细信息。例如,

  thisApplet.setCursor(new Cursor(Cursor.WAIT_CURSOR));
selectdocumentTreeLeaf();
tree.repaint();
thisApplet.repaint();
tree.setEnabled(false);

new SwingWorker<Image, Void>(){
@Override
protected Image doInBackground() throws Exception {
return createImage(queue.q[pointer].currentPage);;
}

@Override
protected void done() {
try {
result = get();
thisApplet.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
tree.setEnabled(true);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}.execute();

关于java - Swing 更新谜题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941464/

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