首页 文章

如何阻止JTextField在GridLayout中重新调整大小

提问于
浏览
3

我正在创建一个带网格布局的GUI . 我直接添加了JTextFields,JButton和所有内容 . 举个例子,像这样,

JButton b1 = new JButton("Hello"):
JButton b2 = new JButton("Bye");
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);

GridLayout grid = new GridLayout(2,2,2,2);

JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(b1);
panel.add(t1);
panel.add(b2);
panel.add(t2);

在这里,如果用户调整窗口大小,则一切都显得非常大 . 我知道阻止这些获取这些的唯一另一种方法是添加所有每个和所有内容以分离具有FlowLayout的JPanel . 但这不实用,因为如果有20个东西,将有20个JPanels . 我尝试设置最大尺寸,最小尺寸和所有,但他们没有改变任何 . 请帮忙 .

3 回答

  • 0

    使用普通GridLayout不可能

  • 2

    @mKorbel和@Logan在他们的答案中有一个观点,但是如果你出于某种原因真的真的需要使用GridLayout并且你真的需要JTextField保持一定的大小那么你可以通过将JTextField放在JPanel中来实现一个BorderLayout .

    JTextField fixedWidthField = new JTextField();
    JPanel fieldPanel = new JPanel(new BorderLayout());
    fieldPanel.add(fixedWidthField, BorderLayout.WEST);
    
    GridLayout grid = new GridLayout(2,2,2,2);
    
    JPanel panel = new JPanel();
    panel.setLayout(grid);
    panel.add(b1);
    panel.add(fieldPanel);
    panel.add(b2);
    panel.add(t2);
    

    我们都建议您使用更高级的布局管理器 . 我个人喜欢TableLayout,但你需要为此下载一个额外的Jar文件 .

  • 5

    这是gridLayout的默认行为 . 我不确定它很容易阻止它 . 我会改用gridBagLayout . 您可以为每个单元格将填充设置为无 . 起初它比较困难,但现在我只使用它 .

相关问题