好的,我正在编写一个程序来测试使用JLabels在JFrame上放置大量图像,这非常顺利,直到这个非常奇怪的错误发生,JFrame上完全随机的图像只是不显示,然而调整大小或将Frame移出屏幕并再次返回会使它们显示。我不知道是什么原因。
但是90%的情况是这样的
https://i.stack.imgur.com/WAinc.png https://i.stack.imgur.com/soRhc.png 下面是我的代码:public class JFrameTest extends JFrame{
int maxX=20;
int maxY=20;
int Coords[][];
ImageIcon wallImage = new ImageIcon(getClass().getResource("/Resources/Wall.png"));
ImageIcon floorImage = new ImageIcon(getClass().getResource("/Resources/floor.png"));
ImageIcon voidImage = new ImageIcon(getClass().getResource("/Resources/Void.png"));
JPanel Jpan=new JPanel();
public JFrameTest(){
Coords = new int[maxY][maxX];
setTitle("TestFrame");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1200,800);
Jpan.setSize(1200, 800);
add(Jpan);
Jpan.setLayout(null);
setVisible(true);
for(int i =0; i<Coords.length;i++){
for(int j =0; j<Coords[i].length; j++){
if (Coords [i][j] == 0)
drawWalls(i*64,j*64);
}
}
}
public void drawWalls(int x,int y){
JLabel pic2 = new JLabel();
pic2.setIcon(wallImage);
Jpan.add(pic2);
add(Jpan);
pic2.setBounds(new Rectangle(new Point(y,x),pic2.getPreferredSize()));
pic2.setVisible(true);
setVisible(true);
}
}
有人知道这里发生了什么吗?
在结尾使用setVisible(true),在JLabel对象上调用setVisible()是没有意义的。只需在末尾使用update方法
Jpan.update();