从其他方法调用GUI后我的GUI出现问题,我正在制作多米诺骨牌游戏。
在这里的图片中,GUI工作正常并完成它应该做的事情,但是在第二个图像中我试图使用完全相同的GUI然而它通过不同的方式解析(我有一个开始屏幕,它将调用该方法并使GUI可见)。 在控制台中,切片存储在已分配的数组中,也可以绘制到GUI
上这里的第二个图像是在firstScreen()类的actionlistener中调用playerVSAI方法。这个类只是左边显示的窗口。然而,控制台,playerVSAI方法似乎按预期工作,但是不显示图块的图像。
将数据存储到数组中并将图块绘制到同一个上的方法,我已经附上了以下代码的片段
if(input2.equalsIgnoreCase("l"))
{
//add selected input to gameboard
gameboardX.add(0,player.get(input1));
JLabel imageTile = new JLabel(new ImageIcon(rotate(bi,rotateDegree)));
//place domino image to left, Y direction still the same, only shift X ,
// shift X by turnCounter, as turnCounter++ larger amount can only shift outwards
c.gridy = startingY;
c.gridx = startingX - turnCounter ;
//add image
gui.add(imageTile,c);
gui.revalidate();
}
答案 0 :(得分:0)
确保你已经调用了setVisible(true);在向GUI添加元素的最后一行。
答案 1 :(得分:0)
这看起来和感觉就像一个线程问题,可能是你的线程和Swing之间的竞争条件(但这样的事情只能通过从主线程运行setVisible
来实现)。
确保启动窗口的所有逻辑都是从EDT运行的,并且没有数据从其他线程传递给Swing对象。最简单的架构是将所有代码放入EventQueue#invokeLater
,之后你可以转向某种形式的同步(坦率地说,对于多米诺骨牌游戏,我不会......除非你有大量的人工智能运行其中一名球员。)