간단한 질문입니다 ... 기본적으로 레이아웃 고려 사항입니다. 아래 코드를 살펴 보겠습니다.기본 레이아웃에 대한 의견이 필요합니다.
.
가 어떻게 그것을 달성 할 수 : 내가 좋아하는 것이 무엇
public class TestCode_Web {
public static void main(String[] args) {
JFrame window = new JFrame("Test");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(200, 300);
// Inner panel ---------------------------------------------------------
JPanel innerPanel = new JPanel(new BorderLayout());
innerPanel.setBackground(new Color(250, 250, 200));
window.add(innerPanel);
// Northern panel ------------------------------------------------------
JPanel panelN = new JPanel(new BorderLayout());
JLabel labelN = new JLabel("Label");
panelN.add(labelN, BorderLayout.WEST);
panelN.setBackground(new Color(200, 250, 250));
innerPanel.add(panelN, BorderLayout.NORTH);
// Center panel --------------------------------------------------------
JPanel panelC = new JPanel();
panelC.setBackground(new Color(250, 200, 250));
JPanel panelCheckBoxes = new JPanel(new GridLayout(0, 1));
final JCheckBox c1 = new JCheckBox("C1");
final JCheckBox c2 = new JCheckBox("C2");
final JCheckBox c3 = new JCheckBox("C3");
panelCheckBoxes.add(c1);
panelCheckBoxes.add(c2);
panelCheckBoxes.add(c3);
int width = panelCheckBoxes.getPreferredSize().width;
int height = panelCheckBoxes.getPreferredSize().height;
panelCheckBoxes.setPreferredSize(new Dimension(width, height));
panelC.add(panelCheckBoxes);
innerPanel.add(panelC, BorderLayout.CENTER);
// Southern panel --------------------------------------------------------
JPanel panelS = new JPanel(new BorderLayout());
JLabel labelS = new JLabel(String.valueOf(width) + "/" + String.valueOf(height));
panelS.add(labelS, BorderLayout.WEST);
panelS.setBackground(new Color(250, 250, 200));
innerPanel.add(panelS, BorderLayout.SOUTH);
// ...
window.setVisible(true);
}
}
이를 가지고있다? 나는 여러 가지 방법이 있다고 생각합니다. 귀하의 다양한 제안을 기다리고 있습니다 ...
안녕하세요, Tobias, 먼저 답변 해 주셔서 감사합니다. 이제 몇 가지 질문이 있습니다. ** question # 1부터 시작하겠습니다. ** 'panelCheckBoxes'의 선언을 사용자가 지정한 것으로 바꾸려고 시도했지만 이상한 오류 메시지가 나타납니다. ' final이 아닌 변수 panelC는 다른 메소드에 정의 된 내부 클래스 내부에 있습니다. ' 이걸 없애기 위해 나는 무엇을 할 수 있습니까? –
예, 고맙습니다. 사실 꽤 잘 작동합니다. 이제 ** question # 2 **가 생성자에서'preferredSize'를 설정하는 것에 대해 말한 내용이 될 것입니다. 그 코드 조각을 줄 수 있습니까? 이것은'getPreferredSize'와'setPreferredSize()'를 지정하는 사이의 요점을 정확하게 볼 수 없기 때문에 이론적 인 질문입니다.이 점에 대해 더 잘 이해할 수 있도록 도와 줄 수 있습니다. –
OK, 더 나은 이해,하지만'setPreferredSize()'를 사용하는 것은 여전히 잘 작동하지 않습니다. 저는 누락 된 _refresh() _ 메소드 호출이있는 것 같아요. 실제로'setPreferredSize'보다는 실제로'getPreferredSize'를 사용하는 것이 꽤 어렵습니다. * 컴퍼넌트의 폭을 설정합니다. –