如何在 BoxLayout 中设置 JComponent 的位置?
How to set position to JComponent in BoxLayout?
我想使用 2 JPanel
作为 panel
和 panel_1
。
我想使用 JLabel
自动将图像添加到面板
并将 JButton
添加到 panel_1
.
如何根据按钮上方的图片调整按钮大小?
public class Testing extends JFrame {
public Testing() {
this.setSize(590, 327);
this.setTitle("JFrame");
getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(118, 136, 321, 89);
getContentPane().add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JLabel lblImage = new JLabel("image for button1");
panel.add(lblImage);
JLabel lblImage_1 = new JLabel("image for button2");
panel.add(lblImage_1);
JLabel lblImage_2 = new JLabel("image for button3");
panel.add(lblImage_2);
JPanel panel_1 = new JPanel();
panel_1.setBounds(118, 30, 321, 77);
getContentPane().add(panel_1);
panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.X_AXIS));
JButton btnNewButton = new JButton("New button 1");
panel_1.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button 2");
panel_1.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button 3");
panel_1.add(btnNewButton_2);
}
public static void main(String[] args) throws Exception {
Testing frame = new Testing();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}
如果您的目标是让按钮位于图片上方,并且按钮的宽度随图片一起扩展,那么:
- 摆脱对空布局的使用和
.setBounds(...)
(这只是很好的一般性建议)
- 将带有图像的 JLabel 放入使用 BorderLayout 的 JPanel 中,JLabel 在 BorderLayout.CENTER 位置
- 使用 BorderLayout.PAGE_START 位置将按钮放在同一 JPanel 中的 JLabel 上方。
- 然后将该 JPanel 放在 GUI 中任何需要的地方,嵌套 JPanel,每个 JPanel 使用自己的布局管理器。
BorderLayout 将允许中心组件填充该位置,并将扩展 PAGE_START 和 PAGE_END 位置以填充必要的宽度。如果顶部和底部组件更宽,那么这也会扩大容器的宽度。
我想使用 2 JPanel
作为 panel
和 panel_1
。
我想使用 JLabel
自动将图像添加到面板
并将 JButton
添加到 panel_1
.
如何根据按钮上方的图片调整按钮大小?
public class Testing extends JFrame {
public Testing() {
this.setSize(590, 327);
this.setTitle("JFrame");
getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(118, 136, 321, 89);
getContentPane().add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JLabel lblImage = new JLabel("image for button1");
panel.add(lblImage);
JLabel lblImage_1 = new JLabel("image for button2");
panel.add(lblImage_1);
JLabel lblImage_2 = new JLabel("image for button3");
panel.add(lblImage_2);
JPanel panel_1 = new JPanel();
panel_1.setBounds(118, 30, 321, 77);
getContentPane().add(panel_1);
panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.X_AXIS));
JButton btnNewButton = new JButton("New button 1");
panel_1.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button 2");
panel_1.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button 3");
panel_1.add(btnNewButton_2);
}
public static void main(String[] args) throws Exception {
Testing frame = new Testing();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}
如果您的目标是让按钮位于图片上方,并且按钮的宽度随图片一起扩展,那么:
- 摆脱对空布局的使用和
.setBounds(...)
(这只是很好的一般性建议) - 将带有图像的 JLabel 放入使用 BorderLayout 的 JPanel 中,JLabel 在 BorderLayout.CENTER 位置
- 使用 BorderLayout.PAGE_START 位置将按钮放在同一 JPanel 中的 JLabel 上方。
- 然后将该 JPanel 放在 GUI 中任何需要的地方,嵌套 JPanel,每个 JPanel 使用自己的布局管理器。
BorderLayout 将允许中心组件填充该位置,并将扩展 PAGE_START 和 PAGE_END 位置以填充必要的宽度。如果顶部和底部组件更宽,那么这也会扩大容器的宽度。