Java Swing BoxLayout忽略AlignmentX

Miz*_*zor 6 java swing boxlayout

在下面的代码,通过调用setAlignmentXComponent.LEFT_ALIGNMENT我预计在居中滑块获得靠左对齐的标签.由于某种原因,标签也是居中的,看起来无论传递给setAlignmentX的值是什么.

我必须将什么值传递给setAlignmentX以使其保持对齐?

package myjava;

import java.awt.Component;
import java.awt.Container;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;

public class LayoutTest {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame("BoxLayoutDemo");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                // create left aligned label over centered column
                Container contentPane = frame.getContentPane();
                contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
                JLabel label = new JLabel("test");
                label.setAlignmentX(Component.LEFT_ALIGNMENT);
                contentPane.add(label);
                contentPane.add(new JSlider());

                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

kle*_*tra 9

基本上,你不能在BoxLayout中使用不同的路线,如何使用BoxLayout

通常,由顶部到底部BoxLayout对象控制的所有组件应具有相同的X对齐.

编辑

通常,没有记录组件类型具有哪个默认对齐(JSlider默认居中,我错误地认为JLabel在左对齐时居中;-)一个选项是将列表保留在某处(dooooh ...) ,另一个是在添加时简单地强制它们全部达到相同的对齐方式.

或者使用第三方layoutManager,它没有这种相当不合适的(对我来说)布局和对齐的混合.