Проблема здесь в том, что JLabel выравнивает свой правый край с центром панели, а полоса прокрутки выравнивает свой центр с центром панели.
Мне удалось исправить это, добавив две строки, установив горизонтальное выравнивание для label
и jscrlpBox
на Component.LEFT_ALIGNMENT
:
JLabel label = new JLabel("Option");
label.setAlignmentX(Component.LEFT_ALIGNMENT); // Added
panel.add(label);
JLabel a = new JLabel("A");
JLabel b = new JLabel("B");
JLabel c = new JLabel("C");
JLabel d = new JLabel("D");
JLabel e = new JLabel("E");
Box box = Box.createVerticalBox();
box.add(a);
box.add(b);
box.add(c);
box.add(d);
box.add(e);
JScrollPane jscrlpBox = new JScrollPane(box);
jscrlpBox.setPreferredSize(new Dimension(140, 90));
panel.add(jscrlpBox);
jscrlpBox.setAlignmentX(Component.LEFT_ALIGNMENT); // Added
В общем, при устранении неполадок, подобных этому, я пытаюсь добавить ярко окрашенную границу линии для компонентов (в данном случае, label
), которые находятся не там, где я хочу, чтобы они были. Именно тогда я понял, что он выравнивает свой правый край с той же линией, которую другой компонент использовал для выравнивания своего центра.