在下面的代码中,通过使用setAlignmentX
调用Component.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);
}
});
}
}
最佳答案
基本上,从How To Use BoxLayout到BoxLayout,您不能有不同的对齐方式
编辑
通常,没有记录组件类型具有哪个默认对齐方式(默认情况下JSlider居中,我错误地认为JLabel左对齐时居中;-)一种选择是将列表保留在某处(dooooh ...) ,另一种方法是在添加时简单地将它们全部强制为相同的对齐方式。
或使用第三方layoutManager,它对布局(布局)和对齐方式(对我而言)没有混淆。