JLabel随机不在JFrame上显示图像

时间:2014-03-18 13:07:14

标签: java swing netbeans jframe jlabel

好吧我正在编写一个程序来测试使用JLabel在JFrame上放置大量图像,直到这个非常奇怪的错误发生在JFrame上的完全随机图像没有出现的情况下,这一点非常好调整框架大小或移动框架并重新打开它会使它们显示出来。我不知道造成这种情况的原因。

但这是大约90%的时间发生的事情:

http://i.imgur.com/y4u8K5C.png

http://i.imgur.com/fSggKKd.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);
}

}

有没有人知道这里发生了什么?

1 个答案:

答案 0 :(得分:0)

最后使用setVisible(true),并且没有必要在JLabel对象上调用setVisible()。只需在最后使用更新方法

Jpan.update();