Редактировать: если вы поставите этот вопрос, вы можете оставить комментарий, чтобы объяснить, почему это будет более конструктивным.Выравнивание компонентов в ящике
я получить этот неожиданный результат ...
... используя этот код:
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class TestAlignment extends JFrame {
// Constructor
public TestAlignment() {
super("Test Alignment");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Components to show
JLabel leftLabel = new JLabel("Left");
JButton centerButton = new JButton("Middle");
JLabel rightLabel = new JLabel("Right");
// Add all to box
Box box = Box.createVerticalBox();
box.add(leftLabel);
box.add(centerButton);
box.add(rightLabel);
box.add(Box.createHorizontalStrut(180));
// Align content in box
leftLabel.setAlignmentX(LEFT_ALIGNMENT);
centerButton.setAlignmentX(CENTER_ALIGNMENT);
rightLabel.setAlignmentX(RIGHT_ALIGNMENT);
// Add box to frame, and show frame
box.setOpaque(true);
setContentPane(box);
setVisible(true);
}
// Main
public static void main(String[] args) {
// Create frame in EDT
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { new TestAlignment(); }
});
}
}
Теперь я понимаю, это работает как и ожидалось JComponent.setAlignmentX()
: этот метод говорит, который стороны компонентов должны быть выровнены (верхняя этикетка с левой стороны выровнена с центральной кнопкой и нижней меткой справа).
Я хотел бы понять, как каждая метка выровнена как ожидалось интуитивно (левая метка слева, правая метка справа), этикетки, касаясь вертикальных краев коробки?
(Я знаю, как сделать, чтобы положить каждую метку в коробку, встроенную и используя Box.createHorizontalGlue()
, чтобы заставить ее с левой или с правой стороны, но мне кажется слишком много для простой цели выравнивания. для чего-то более простого)
Если бы вы потратили чтение момент полезные всплывающие подсказки, вы бы поняли, что это не имеет никакого отношения к тому, что было определено тегом [tag: box] для. –