我有一个带有卡布局组件的JFrame。我正在使用卡布局在应用程序执行的不同时刻在不同的JPanel之间切换。在某些时候,我正在使用摇摆工人对象来生成一些XML文件。在这段时间里,我想在我的窗口中显示另一个JPanel,告诉用户等待。在这个JPanel上,我想在3个标签之间切换。
现在代码如下:
ConvertersWorker.execute();
CLayout.show(Cards, WAIT_PANEL);
Timer t =new Timer(500, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
WaitPanel.SwitchLabels();
}
});
t.start();
while (!this.finishedConverting)
{
}
//After this im am executing other methods based on the generated XML files
SwingWorker代码:
SwingWorker<Boolean, Void> ConvertersWorker = new SwingWorker<Boolean, Void>() {
public Boolean doInBackground() {
Boolean result = RunConverters();
return result;
}
public void done() {
try {
finishedConverting = get();
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (ExecutionException ex) {
ex.printStackTrace();
}
}
} ;
第二个 JPanel 甚至没有显示,因为 JFrame 块。由于 while 循环,它阻塞了,但我不知道如何以不同的方式实现它。而且,从摇摆工人完成的方法()永远不会被执行。如果执行它,则完成的转换变量将设置为 true,并且 while 循环将停止。任何人都可以帮我找到更好的解决方案吗?
我移除了< code>while循环,并将循环之后的代码移到了另一个方法中,该方法在< code>SwingWorker的< code>done()方法中执行,因此现在它可以工作了。
我知道你解决了这个问题,但这种情况正在发生,因为你只使用了一个线程
,并且它因为while
而被阻塞,所以你需要创建一个新的线程
来处理这个问题
new Thread(){
public void run() {
//code here
}
}.start();
要刷新< code>JPanel的内容,您可以使用
myJpanel.doLayout();
或者
myJpanel.repaint();
问题内容: 下面显示的以下代码会将3个JLabel添加到JFrame中,然后删除3个JLabel。2秒后,它将重新绘制3个JLabel。 我面临的一个小问题是,它正在重新绘制到新的frame(frameTwo)而不是旧的frame(frameOne)。 如何使它重新绘制现有框架而不是重新绘制到新框架? 问题答案: Simpy使用CardLayout来交换视图。 请使用Swing计时器,而不要使用当
编辑:当我拖动边框时,某种刷新被发送,我需要弄清楚并手动发送相同的刷新。 请注意,我已经尝试使用revalidate()和repaint()。 当使用JFrame和JPanel来显示一个框架时,我试图使框架的大小易于改变。 null 此外,一个重要的注意事项是,当您拖动边框时,白条会消失,并正确地重新加载/刷新内容(即使您只是少量拖动)
我一直在努力让我的JFrame重新绘制它的内容。在将新组件添加到JFrame中后,我尝试同时使用revaluate()和repaint()方法,但没有看到框架发生变化。 当用户单击前3个按钮中的任一个时,他们将进入以下代码块 当点击一个按钮时,整个应用程序变成白色,但我看不到我添加的新按钮。当我删除两个setVisible()方法行时,单击一个按钮肯定会删除组件,因为我现在不能单击其中任何一个,但
问题内容: 我有一个JList,它显示来自矢量的信息。然后,用户可以从该向量中添加和删除信息。从Vector添加/删除项目时,是否可以刷新JFrame中的JList?目前我正在做.. 但这不会将JList刷新为新内容。我检查了一下,矢量内容等确实发生了变化,但列表没有刷新。为什么?我该如何解决? 问题答案: 您不应该更新Vector。应该直接对ListModel进行更改,然后表将自动重新绘制自身。
问题内容: 我正在使用GUI和JFrames / JPanels创建棋盘游戏,您可以在计算机上玩该游戏。我有一个名为showPieces()的方法,该方法通过更改按钮数组(以网格格式布置)上的图像图标来更新板子GUI。一旦图标已更新,则和方法将更新GUI。showPieces()方法具有一个参数,每次调用它时都需要将其传递给它。 我遇到的主要问题是,我希望人类采取行动,更新GUI,等待1秒钟,计算
我目前正在用Java制作一个“超级Tic-Tac-Toe”应用程序。以下是我的目标描述。http://mathwithbaddrawings.com/ultimate-tic-tac-toe-original-post.然而,我在点击更新Jframe时遇到了问题。我的应用程序由单独的单元(JLabel)组成,它们构成了Tic-Tac趾板(JPanel),该趾板将驻留在JFrame中。 我的问题是,