Java BoxLayout 在左边和右边放置一些对象
Java BoxLayout place some Objects left and some right
我想将子组件放置到 JPanel
。但问题是,我想将组件放在父级 JPanel
的左侧和右侧。我正在使用 BoxLayout
,目前我已经设置了子组件的 X 对齐方式。我的问题显示在这里:MyProblem
有很多方法可以实现您的目标。
使用BoxLayout
时,我通常将组件放入嵌套面板中。
请参阅我的示例,其中我对每个组件使用 BoxLayout
和 X_AXIS
。您也可以使用另一个 LayoutManagers,这只是一个示例:
public class BoxLayoutAlign {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
UIManager.put("Label.font", new Font("Calibri", Font.PLAIN, 20));
createGui();
});
}
private static void createGui() {
JFrame frame = new JFrame("example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
frame.setContentPane(contentPanel);
JLabel left = new JLabel("Left");
JLabel right = new JLabel("Right");
JLabel center = new JLabel("Center");
contentPanel.add(placeLeft(left));
contentPanel.add(placeRight(right));
contentPanel.add(placeCenter(center));
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
static JPanel createBoxXWith(Component... components) {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
for (Component c : components)
panel.add(c);
return panel;
}
static JPanel placeRight(Component component) {
return createBoxXWith(Box.createHorizontalGlue(), component);
}
static JPanel placeLeft(Component component) {
return createBoxXWith(component, Box.createHorizontalGlue());
}
static JPanel placeCenter(Component component) {
return createBoxXWith(Box.createHorizontalGlue(), component, Box.createHorizontalGlue());
}
}
结果为:
我想将子组件放置到 JPanel
。但问题是,我想将组件放在父级 JPanel
的左侧和右侧。我正在使用 BoxLayout
,目前我已经设置了子组件的 X 对齐方式。我的问题显示在这里:MyProblem
有很多方法可以实现您的目标。
使用BoxLayout
时,我通常将组件放入嵌套面板中。
请参阅我的示例,其中我对每个组件使用 BoxLayout
和 X_AXIS
。您也可以使用另一个 LayoutManagers,这只是一个示例:
public class BoxLayoutAlign {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
UIManager.put("Label.font", new Font("Calibri", Font.PLAIN, 20));
createGui();
});
}
private static void createGui() {
JFrame frame = new JFrame("example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
frame.setContentPane(contentPanel);
JLabel left = new JLabel("Left");
JLabel right = new JLabel("Right");
JLabel center = new JLabel("Center");
contentPanel.add(placeLeft(left));
contentPanel.add(placeRight(right));
contentPanel.add(placeCenter(center));
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
static JPanel createBoxXWith(Component... components) {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
for (Component c : components)
panel.add(c);
return panel;
}
static JPanel placeRight(Component component) {
return createBoxXWith(Box.createHorizontalGlue(), component);
}
static JPanel placeLeft(Component component) {
return createBoxXWith(component, Box.createHorizontalGlue());
}
static JPanel placeCenter(Component component) {
return createBoxXWith(Box.createHorizontalGlue(), component, Box.createHorizontalGlue());
}
}
结果为: