2010-04-01 220 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,它会自动将元素居中。