【发布时间】:2014-03-11 10:33:54
【问题描述】:
我想在每次通过 for 循环时更新我的 GUI,我可以在手动更新它时更新我的 GUI,但在循环中它只显示最后一次更新。我听说过并阅读过关于 SwingWorker 的内容,但老实说,我不太了解它,而且示例与我需要做的不同。
这是我的循环:
for(int i = 0; i < 3; i++){
actionRoll();
}
这是更新我的 GUI 的方法:
public static void actionRoll() {
String uitkomst, dice1, dice2;
int isHonderd, isMexico;
// making instance of generator
Generator generator = new Generator();
//get info from generator
uitkomst = generator.getResults();
isHonderd = generator.getIfHunderd();
isMexico = generator.getIfMexico();
//split the result
String[] parts = uitkomst.split("-");
dice1 = parts[0];
dice2 = parts[1];
//setLeft Dice
ImageIcon image = new ImageIcon("img/diceSurface/diceSurface0"+dice1+".png");
((IconPanel) pnDiceLeft).setImage(image);
//setRightDice
ImageIcon image1 = new ImageIcon("img/diceSurface/diceSurface0"+dice2+".png");
((IconPanel) pnDiceRight).setImage(image1);
pnMainPanel.updateUI();
}
现在它只显示循环的第三次也是最后一次,如何解决这个问题? 我对 thread.sleep() 进行了讨论,但它不起作用..
提前致谢!
【问题讨论】:
-
请询问 pnMainPanel.updateUI(); 的原因是什么,因为此方法如果用于更改 LookAndFeel 或覆盖 JComponent 的自定义方法,但无法更改 JPanel 中的 ImageIcon
-
updateUI 是为了确保我更新的图片(部分透明)的背景正确显示,否则我的图片的透明背景中有奇怪的东西
-
你没有提到你的目标,updateUI 是错误的通知器,甚至在一些奇怪的代码结构中对你有用 :-)
标签: java swing user-interface swingworker