2012-12-02 4 views
3

레벨 편집기에서 만드는 간단한 게임의 레벨 편집기를 만들고 있는데, 그리드에 정렬 된 몇 개의 단추와 레이블이 필요합니다. 그리드 레이 아웃 (gridlayout)이 의도 한 것보다 훨씬.Gridlayout은 가로가 아닌 세로로만 요소를 추가합니다.

지도 폭 :

지도 높이 :

지도 깊이 :

다음 코드는, 나를 넘어 어떤 부정한 이유로에만이 같은 서로 아래 요소를 추가

는 다음과 같이 -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

관련 문제