아래의 테스트 코드에 대한 몇 가지 질문 ... 게시 할 전체 작업 프로그램이 없지만 사람들이 스윙을 할 정도로 스윙을 알기를 바랍니다. 그것. 이것은 JPanel (BoxLayout) 내부의 JLabel이며, 오른쪽 아래의 레이블 크기 조정 작업을하고 있습니다.Java Swing 구성 요소 상호 작용 (BoxLayout 및 Label)
표시된 코드와 함께 얻은 것은 300x30 높이의 상태 상자입니다. 내가 선호하는 크기와 레이블의 최소 크기로 만져 보았고 어떤 합리적 인 방식으로도 행동하지 않는 것 같습니다.
- JPanel 기본 크기가 너비에는 영향을 미치지 만 너비는 이 아닌 이유는 무엇입니까? setPreferredSize()의 x 치수를 0 또는 500으로 변경하면 여전히 레이블에서 300이 나옵니다.
- JLabel 최소 크기가 폭에 영향을 미치지 만 높이가 이 아닌 이유는 무엇입니까? setPreferredSize() 호출에 주석을 달고 레이블 높이를 30으로 늘리면 아무 일도 일어나지 않습니다.
- JPanel setMinimumSize (주석 처리)로 시작했지만 더 이상 효과가 없습니다. 왜 JPanel에 setPreferredSize()가 필요합니까?
- 레이블 텍스트를 ""에서 ""로 변경하면 레이블의 높이가 늘어납니다. 라벨이 높이를 제어하지 않기 때문에 왜 이것이 전혀 효과가 있습니까?
그런데 createRigidArea() 호출은 화면의 왼쪽을 고집하지 않고 구분 기호를 오른쪽으로 강제 이동하는 것입니다. 이것에 대한 덜 불쾌한 아이디어가 있다면, 나는 감사 할 것입니다.
private JComponent makeStatusBarTest() {
JPanel statusPanel = new JPanel();
statusPanel.setLayout(new BoxLayout(statusPanel, BoxLayout.LINE_AXIS));
statusPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
// statusPanel.setMinimumSize(new Dimension(0, 30));
statusPanel.setPreferredSize(new Dimension(500, 30));
JLabel statusLabel = new JLabel();
Border emptyBorder = BorderFactory.createEmptyBorder(5, 10, 5, 10);
statusLabel.setBorder(emptyBorder);
statusLabel.setText("");
statusLabel.setMinimumSize(new Dimension(300, 20));
statusPanel.add(statusLabel);
statusPanel.add(new JSeparator(SwingConstants.VERTICAL));
statusPanel.add(Box.createRigidArea(new Dimension(5000,0)));
return statusPanel;
}
"전체 프로그램"을 표시하지 마십시오. 그러나 동일한 토큰에 문제를 컴파일하고 실행하여 보여 주며 [sscce] (http://sscce.org)가 도움이 될 것입니다. 당신을 훨씬 잘 도와 줄 수 있습니다. –
@orbfish 제발 무엇이 새로운지 Dimension (5000,0))); '당신이 칠하고 싶고 높이가 0 인 모니터 (세 개를 세어도 좋습니다) – mKorbel
@HovercraftFullOfEels - 새로운 sscce 종교가있는 것 같습니다. 그것에 연결. 나는 일하는 프로그램을 게시 할 수 없다고 말했다. – orbfish