2012-12-02 95 views
3

我做了一個簡單的遊戲,我創建一個關卡編輯器,在關卡編輯器我想有都在網格對齊的幾個按鈕和標籤。幾乎所有的網格佈局都被設計來完成。網格佈局只會增加元素垂直,水平不

下面的代碼,一些邪惡的原因,是超越我,只會增加彼此的下面的元素,像這樣:

地圖寬度:

地圖身高:

地圖深度:

它-should-是這樣的:

地圖寬度:地圖身高:

地圖深度:

我一直在嘗試了一個小時,我幾乎難倒了,這不應該因爲它沒有得到它的工作需要同樣多的努力,但它的作用。

private void drawUiElements() 
{ 
    int xLoc = (int) (dim.width * 0.75); 
    int yLoc = 0; 
    int width = (int) (dim.width * 0.25); 
    int height = dim.height; 

    JPanel buttonContainer = new JPanel(); 
    buttonContainer.setLayout(new GridLayout(16, 2, 5, 5)); 
    buttonContainer.setBounds(xLoc, yLoc, width, height); 
    buttonContainer.setName("buttonContainer"); 

    JLabel labelx = new JLabel("Map Width:"); 
    JLabel labely = new JLabel("Map Height:"); 
    JLabel labelz = new JLabel("Map Depth:"); 

    buttonContainer.add(labelx, "1"); 
    buttonContainer.add(labely, "2"); 
    buttonContainer.add(labelz, "3"); 

    add(buttonContainer); 
} 

謝謝。

回答

2

使用GridLayout時,不能將組件添加到一個特定的細胞。你可以行的初始數量設置爲0,使得部件都充滿行一

buttonContainer.setLayout(new GridLayout(0, 2, 5, 5)); 

參見:How to Use GridLayout

+0

但是API指定分量首先先加入的,而不是排列。 http://docs.oracle.com/javase/6/docs/api/(圖1) – user1870238

+0

這隻會如果指定0'的'的初始行數量,使得所有可能的行首先填補之前的佈局工作重新計算。查看更新 – Reimeus