당신은 그것에 대해 BorderLayout
을 사용할 수 없습니다. 레이아웃에 내장 중 하나
솔루션 : 내가 사용하는 것이 좋습니다 것
FlowLayout
또는 GridLayout
, 당신이 원하는에 따라 달라집니다. 여전히 BorderLayout을 외부 패널로 사용할 수 있지만 위에서 언급 한 레이아웃 중 하나를 사용하는 내부 패널을 소개하기 만하면됩니다.
따라서 GridLayout
을 사용하면 라벨을 격자 레이아웃으로 포장 한 다음 테두리 레이아웃에 배치 할 수 있습니다.코드는 다음과 같습니다 MigLayout와
panel.setLayout(new BorderLayout());
final JPanel upperPanel = new JPanel();
panel.add(upperPanel, BorderLayout.NORTH); // add some stuff in the north
final JPanel innerPanel = new JPanel(new GridLayout(1,0));
JLabel[] dashedLineLabel = new JLabel[wordLength];
for (int i = 0; i < wordLength; i++) {
dashedLineLabel[i] = new JLabel("__ ");
dashedLineLabel[i].setFont(new Font("Serif", Font.BOLD, 30));
innerPanel.add(dashedLineLabel[i]);
}
panel.add(innerPanel, BorderLayout.CENTER);
솔루션 :
당신이 다른 레이아웃 사이에서 선택을하지 않으려면, 당신은 또한 제 3 자 레이아웃 매니저입니다 MigLayout을 사용할 수 있습니다, 기본적으로 한 관리자의 모든 옵션을 제공합니다. 그리고 더 깨끗한 코드 (imho)를 갖게 될 것입니다. 물론 단점은 외부 jar 파일을 종속성으로 사용해야한다는 것입니다. (그런데 : 나는 MigLayout에 대해 알게 이후, 다시 또 다른 레이아웃 매니저를 사용한 적이있다.)
MigLayout
으로 : 그 MigLayout를 들어
final JPanel labelPanel = new JPanel(new MigLayout("", "", ""));
panel.add(labelPanel, "north");
JLabel[] dashedLineLabel = new JLabel[wordLength];
for (int i = 0; i < wordLength; i++) {
dashedLineLabel[i] = new JLabel("__ ");
dashedLineLabel[i].setFont(new Font("Serif", Font.BOLD, 30));
panel.add(dashedLineLabel[i], "wrap");
}
하나! :) –
+1, MigLayout이 최고입니다. ;) – brimborium