摆动:BoxLayout和横向对齐?

时间:2010-02-03 20:30:39

标签: swing layout alignment

我有一个似乎没有意义的绊脚石。

如果我运行下面的程序,我会得到两个对话框,每个对话框都包含JPanels。

alt text alt text

第一个有几个左对齐的JLabel。第二个扩展第一个并添加另一个JPanel作为子面板,但是标签组是右对齐的(即使在组中它们是左对齐的)。给出了什么,以及如何修复它以便一切都是左对齐的? (或者我将如何正确对齐它们?)

package com.example.test.gui;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class BoxLayoutQuestion {
    public static class TestPanel1 extends JPanel
    {
        public TestPanel1()
        {
            super();
            initTestPanel1();
        }
        void initTestPanel1()
        {
            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
            add(new JLabel("Four score and seven years ago"));
            add(new JLabel("One small step for man"));
            add(new JLabel("To be or not to be, that is the question"));
        }
    }
    public static class TestPanel2 extends TestPanel1
    {
        public TestPanel2()
        {
            super();
            initTestPanel2();
        }
        void initTestPanel2()
        {
            JPanel subpanel = new JPanel();
            subpanel.setBorder(
                    BorderFactory.createTitledBorder("something special"));
            subpanel.add(new JLabel("Where's the beef?"));
            add(subpanel);
        }
    }
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, new TestPanel1(), 
                "quotations", JOptionPane.INFORMATION_MESSAGE);
        JOptionPane.showMessageDialog(null, new TestPanel2(), 
                "more quotations", JOptionPane.INFORMATION_MESSAGE);
    }   
}

1 个答案:

答案 0 :(得分:1)

我发现盒子布局对它包含的组件的对齐非常敏感。 您可能需要为要添加到对话框中的组件设置组件alignmentX。

如果在添加每个组件之前调用setAlignmentX(LEFT_ALIGNMENT),则应该得到一致的左对齐行为。