繁体   English   中英

JPLayout中的GridLayout中的组件错误地填充了网格

[英]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调用将被布局管理器覆盖。 可能setPreferredSizesetMaximumSize可以工作,但是由布局管理器决定是否考虑它们。

阅读有关使用布局管理器的Swing教程,以便您了解布局管理器如何工作的基础知识。

GridLayout将所有组件的大小调整为相同的大小。

创建表单时,通常将使用不同的布局管理器嵌套不同的面板,以获得所需的效果。

在这种情况下,您可以对按钮使用FlowLayout。 然后,您可以将GridBagLayout或SpringLayout用于其他组件。

如本所示, BoxLayout在这种情况下是一种有用的替代方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM