2010-04-01 10 views
24

outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));을 사용한 다음 요소 (예 : JLabels, JButton)를 outputPanel에 추가합니다. 예 : outputPanel.add(submitButton);.요소의 중심을 사용하여 BoxLayout에 요소를 가운데에 배치하는 방법은 무엇입니까?

나는 모든 추가 된 요소가 "중앙에 배치"된 것을 볼 수 있습니다. 내 요소가 중심에 있기를 원하기 때문에 좋다. 내가 "중심"이라고 쓸 때 나는 "좌우로부터 동등한 거리"를 의미합니다. 그러나 문제는 요소의 왼쪽 부분이 중심에 배치된다는 것입니다. 그리고 중심에 배치 할 요소의 중심을 갖고 싶습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

비슷한 문제가있어서 'BoxLayout'을 사용하는 대신'FlowLayout'이 더 잘 작동하고 그 안에 개체를 가운데 맞춤하기가 더 쉬워졌습니다. – JFreeman

답변

40

myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);을 사용하면 문제를 해결할 수 있습니다. JLabel, JButtonJRadioButton과 호환됩니다.

+1

나는 그것을 시도하고 모든 항목이 CENTER_ALIGNMENT와 동일한 값으로 setAlignmentX (Component.CENTER_ALIGNMENT)를 적용해야한다는 것을 알아 냈습니다. 하나의 JButton에만 적용하면 도움이되지 않았습니다. 또한 setHorizontalAlignment (SwingConstants.CENTER)가 전혀 도움이되지 않았습니다. 희망이 당신에게 도움이됩니다. –

0

지금까지 와 구성 요소의 모든 유형 작동 내가 만난 가장 좋은 방법 :

JPanel helperPanel = new JPanel();

2. 구성 요소를 추가 (이에 :
1. 새로운 JPanel의 만들기 예를 submitButton는) 당신은 JPanel의 수평 중앙하고자 :
helperPanel.add(submitButton);

3.에 패널을 추가하여 원래 패널 (BoxLayout이있는 패널) : outerPanel.add(helperPanel);

그게 전부 야! 당신이 그것을 확장 outerPanel의이 BoxLayout을하지 않으려면 당신은 또한 helperPanel 최대 크기을 설정할 수 있습니다.
이것이 작동하는 이유가 궁금하다면 JPanel의 암시 적 레이아웃 관리자는 요소를 자동으로 가운데 맞추는 FlowLayout입니다.

관련 문제