2010-04-01 217 views
24

我使用outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));,然後向outputPanel添加元素(例如JLabels,JButtons)。例如:outputPanel.add(submitButton);如何使用元素中心將BoxLayout中的元素居中?

我看到所有添加的元素都是「居中」的。這很好,因爲我確實希望我的元素位於中心。當我寫「中心」時,我的意思是「左右等距」。但問題是元素的左邊部分放在中心。我想要把元素的中心放到中心。我怎樣才能得到這種行爲?

+0

我有一個類似的問題,發現不是使用「BoxLayout」,而是「FlowLayout」工作得更好,並且更容易在其中對齊對象。 – JFreeman 2018-01-03 23:04:30

回答

40

該問題可以通過使用myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);來解決。它適用於JLabel,JButtonJRadioButton

+1

我試過並注意到所有項目都必須將setAlignmentX(Component.CENTER_ALIGNMENT)應用於CENTER_ALIGNMENT的相同值。僅將它應用於一個JButton並沒有幫助。 setHorizo​​ntalAlignment(SwingConstants.CENTER)也完全沒有幫助。希望這對你有所幫助。 – 2016-10-31 12:19:55

0

到目前爲止,與每天都要工作類型的組件我遇到的最好方法:
1.創建一個新的的JPanel

JPanel helperPanel = new JPanel();

2.添加成分(在此例如submitButton)你想水平居中的JPanel中:
helperPanel.add(submitButton);

3.面板添加到您的原裝面板(帶BoxLayout的): outerPanel.add(helperPanel);

就是這樣! 如果您不希望outerPanel的BoxLayout將其展開,您還可以在helperPanel上設置的最大尺寸
如果您想知道爲什麼會這樣工作:JPanel的隱式佈局管理器是FlowLayout,它會自動將元素居中。