Java 如何在JPanel上定位/布置组件?
我试着在JFrame上放置5个按钮。四个按钮应位于第一行,第五个按钮应位于第二行。但在这里,所有按钮都显示在一行中,第五个按钮的一半在面板外。顺便说一下,如果我使用frame.pack();我的身躯比我想象的要小。我不想改变框架的大小。我想找到第二排的第五个Java 如何在JPanel上定位/布置组件?,java,swing,layout-manager,boxlayout,Java,Swing,Layout Manager,Boxlayout,我试着在JFrame上放置5个按钮。四个按钮应位于第一行,第五个按钮应位于第二行。但在这里,所有按钮都显示在一行中,第五个按钮的一半在面板外。顺便说一下,如果我使用frame.pack();我的身躯比我想象的要小。我不想改变框架的大小。我想找到第二排的第五个 import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.*; public class test { public stat
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 529, 300);
frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JButton btnNewButton_4 = new JButton("New button");
panel.add(btnNewButton_4);
JButton btnNewButton_3 = new JButton("New button");
panel.add(btnNewButton_3);
JButton btnNewButton = new JButton("New button");
panel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button");
panel.add(btnNewButton_2);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
四个按钮应位于第一行,第五个按钮应位于第一行
第二排
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 529, 300);
frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JButton btnNewButton_4 = new JButton("New button");
panel.add(btnNewButton_4);
JButton btnNewButton_3 = new JButton("New button");
panel.add(btnNewButton_3);
JButton btnNewButton = new JButton("New button");
panel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button");
panel.add(btnNewButton_2);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
- Oracle教程中关于
- 用于JPanel,但所有JButton将具有相同的维度
- 使用,则每个JButton的大小都会有所不同
- 不可见的JComponents或空JLabel可以帮助您处理最复杂的变体
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 529, 300);
frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JButton btnNewButton_4 = new JButton("New button");
panel.add(btnNewButton_4);
JButton btnNewButton_3 = new JButton("New button");
panel.add(btnNewButton_3);
JButton btnNewButton = new JButton("New button");
panel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button");
panel.add(btnNewButton_2);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
- Oracle教程中关于
- 用于JPanel,但所有JButton将具有相同的维度
- 使用,则每个JButton的大小都会有所不同
- 不可见的JComponents或空JLabel可以帮助您处理最复杂的变体
关于尺寸,请尝试使用panel.setMinimumSize(尺寸d)您使用的是一个BoxLayout,其中组件不会包装(请查看API文档:)
关于尺寸,请尝试使用panel.setMinimumSize(维度d)我所做的是使用null作为布局管理器,并自行放置组件。如果希望在调整窗口大小时中继组件,或者不知道小程序的最终大小,则管理器可以正常工作 但大多数情况下,这并不是真的,或者说是过度杀戮 相反,只需使用像素将组件放置在网格上 立根(x、y、宽度、高度); 例如: 样本
null
layout;例如,在某些平台上,不可调整大小的组件几乎肯定会看起来很糟糕。这就是一个例子。已在其他地方成功使用。更新样本请不要建议null
layout;例如,在某些平台上,不可调整大小的组件几乎肯定会看起来很糟糕。这就是一个例子。已在其他地方成功使用。更新了一个样本