2014-11-21 3 views
0

그래서 윈도우에 비트 맵 타일 격자를 표시하려고합니다. JLabel의 배열을 채우고 해당 위치를 정의하는 .setLocation()을 사용하는 for 루프가 있습니다. 문제는 프레임이 표시 될 때 프레임이 완전히 설정된 위치를 무시하는 것입니다..setLocation()을 사용하면 dosent가 JLabel에서 작동하는 것 같습니다

Heres my code now.

public static void main(String[] args) throws IOException { 
    JFrame mainFrame = new JFrame("game.demo"); 

    mainFrame.addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      System.exit(0); 
     } 
    }); 
    mainFrame.setSize(512, 512); 

    JPanel mainPanel = new JPanel(); 

    BufferedImage desTile16Image = ImageIO.read(new File("assets//desert_tile_16x.bmp")); 
    ImageIcon desTile16Icon = new ImageIcon(desTile16Image); 

    JLabel[][] map = new JLabel[32][32]; 




    for (int x = 0; x < 32; x++) { 
     System.out.print(x + "\n"); 
     map[x][0] = new JLabel(); 
     map[x][0].setIcon(desTile16Icon); 
     map[x][0].setLocation(x * 16, 0); 
     mainPanel.add(map[x][0]); 
    } 

    //mainFrame.pack(); 
    mainFrame.add(mainPanel); 
    mainFrame.setContentPane(mainPanel); 
    mainFrame.setVisible(true); 
} 

어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

'GridLayout' ... – MadProgrammer

답변

1

JPanel mainPanel = new JPanel(new GridLayout(32, 32)); 

는 그런 다음 map[x][0].setLocation(x * 16, 0);

+0

아아 아아 내가 볼 Laying Out Components Within a Container에서 봐, 그리고 How to Use GridLayout 자세한 내용은 필요가 없습니다 ... 같은 것을 고려 , "레이아웃"과 독립적으로 레이블을 배치하는 방법이 있지만 – Tristus

+1

레이아웃 관리자와 함께하는 유스 케이스를 설득해야합니다 ... – MadProgrammer

+0

맨 위 타일 ​​나는 궁극적으로 장소에 대해 움직일 자동차 비트 맵을 표시하고 싶습니다. pixle by pixle. – Tristus

관련 문제