2009-12-07 7 views
0

gridlayout에 요소를 추가하여 세로로 추가하지 않고 가로로 추가하는 방법이 있습니까? 기본적으로 다음 요소로 시작하기 전에 전체 행을 요소로 채 웁니다.Java GridLayout

희망 사항을 명확히했습니다.

+0

GridLayout의 작동 방식입니다. 각 열은 다음 행이 시작되기 전에 채워집니다. 물론 단일 열을 지정하지 않으면 모든 구성 요소가 서로 아래에 추가됩니다. 더 많은 도움이 필요하시면 SSCCE에 게시하십시오. (http://sscce.org) – camickr

답변

2

내가 뭔가를 GridBagLayoutGridBagConstraints

의 제안. GridLayout과 비슷하지만 GridBagConstraints를 사용하면 구성 요소의 x 및 y 좌표를 지정할 수 있으며 열과 행의 간격을 지정할 수 있습니다.

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

GridBagLayout layout = new GridBagLayout(); 
GridBagConstraints c = new GridBagConstraints(); 

JPanel panel = new JPanel(); 
JLabel label = new JLabel("foo"); 

panel.setLayout(layout); 

c.gridx = 0; 
c.gridy = 0; 
panel.add(label, c); 
+0

이것은 정말 유용한 것 같습니다. x와 y는 "테이블"에있는 셀의 위치입니까? – ev00l

+0

네, 세포의 좌표입니다. 컨테이너의 픽셀 좌표가 아닙니다. – jonescb

+0

매력처럼 작동합니다. 나는 각 요소를 추가하기 전에 x와 y를 설정하는 for 루프를 가지고있다. 고마워요! – ev00l

0

GridLayout은 이름에 따라 constructor에서 지정한 열과 행의 수에 따라 구성 요소를 배치하고 지정된 수의 구성 요소를 추가하자 마자 다음 행으로 이동합니다.

귀하의 질문에 따르면, FlowLayout은 찾고있는 라인에 더 가깝습니다.

편집 : 나는 왜,하지만 당신은 (0으로 행의 수를 지정하는 경우, 예를 들어 new GridLayout(0, 9)을, 제대로 작동하는 것 같다 모르겠어요

+0

글쎄, 나는 9x9 그리드 레이 아웃에 5 텍 텍스 필드를 추가하려고 시도했다. 그리고 그것들은 나란히 있지 않고 서로 위에있다. 그래서 먼저 coloumn을 채운 다음 다음 coloumn로 이동, 내가 뭘 원하는 행을 먼저 채우기 : D – ev00l

0

다음 열로 이동하기 전에 열에있는 모든 행을 채우고 싶다고 가정합니다. 그렇다면, 사용자 정의 레이아웃 매니저 VerticalGridLayout

0

를 사용하는 경우 실제로는 그것은 새로운 GroupLayout 사용해야 꽤 멋진 (JDK 1.6부터). 레이아웃에 대한 유연성을 제공합니다.

+0

팁 주셔서 감사합니다 : D – ev00l