[英]Components in GridLayout wit JPanel fills the grid incorrectly
我试图防止JPanel中的GridLayout完全填充单元并忽略组件的任何setSize
我正在使用此代码:
import javax.swing.*;
import java.awt.*;
public class GrideComponents{
public static void main(String[] args) {
JFrame frame = new JFrame("Laying Out Components in a Grid");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(5,2,0,0));
panel.add(new JLabel("Enter name"));
JTextField a = new JTextField(5);
a.setSize(10, 10);
panel.add(a);
panel.add(new JLabel("Enter Roll"));
panel.add(new JTextField(3));
panel.add(new JLabel("Enter Class"));
panel.add(new JTextField(3));
panel.add(new JLabel("Enter Total Marks"));
panel.add(new JTextField(3));
panel.add(new JButton("Ok"));
panel.add(new JButton("Cancel"));
frame.add(panel);
frame.setSize(400,400);
frame.setVisible(true);
}
}
每个组件都将填充gris单元,而不是指定的大小。
谢谢
您是否尝试过设置setMaximumSize和setPreferredSize?
无论如何,我建议您尝试MiGLayout来满足所有布局需求。 简单会令您惊讶!
GridLayout的重点是将组件布置在规则的网格中。 您的setSize
调用将被布局管理器覆盖。 可能setPreferredSize
或setMaximumSize
可以工作,但是由布局管理器决定是否考虑它们。
阅读有关使用布局管理器的Swing教程,以便您了解布局管理器如何工作的基础知识。
GridLayout将所有组件的大小调整为相同的大小。
创建表单时,通常将使用不同的布局管理器嵌套不同的面板,以获得所需的效果。
在这种情况下,您可以对按钮使用FlowLayout。 然后,您可以将GridBagLayout或SpringLayout用于其他组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.