web-dev-qa-db-ja.com

要素の中心を使用してBoxLayoutの要素を中央に配置する方法は?

outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));を使用してから、要素(たとえば、JLabels、JButtons)をoutputPanelに追加します。例:outputPanel.add(submitButton);

追加されたすべての要素が「中央揃え」されているのがわかります。要素を中央に配置したいので、これは良いことです。 「中心」と書いたときは、「左右から等距離」という意味です。しかし問題は、要素の左側が中央に配置されることです。そして、要素の中心を中央に配置したいと考えています。どうすればこの動作を取得できますか?

27
Roman

この問題は、myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);を使用して解決できます。 JLabelJButtonJRadioButtonで動作します。

45
Roman

これまでのところ、コンポーネントのeveryタイプで動作する、私が遭遇した最良の方法:
1。新しいJPanelを作成します。

JPanel helperPanel = new JPanel();

2。水平方向に中央揃えにするコンポーネント(この例ではsubmitButton)をJPanelに追加します。
helperPanel.add(submitButton);

3。パネルを元のパネル(BoxLayoutがあるパネル)に追加します。outerPanel.add(helperPanel);

それでおしまい!また、 最大サイズ helperPanelのBoxLayoutで展開したくない場合は、outerPanelを使用します。
なぜこれが機能するのか疑問に思っている場合、JPanelの暗黙的なレイアウトマネージャーはFlowLayoutであり、要素を自動的に中央に配置します。

0
AdamK