1

我正在尝试以类似表格的样式设置几个标签和文本字段。

目前我正在使用 GridLayout,它可以按我的意愿工作。但是,TextFieldsButton正在扩展到单元格的完整大小。

如何使TextFieldsButton “正常”大小,以及 Layout Manager 会以最简单的方式完成此操作?

这是当前代码和屏幕截图:

    JPanel forms = new JPanel();
    forms.setLayout(new GridLayout(3, 2));

    JLabel lbl_navn = new JLabel("Virksomhedsnavn:");
    JTextField txt_navn = new JTextField();

    JLabel lbl_adresse = new JLabel("Adresse:");
    JTextField txt_adresse = new JTextField();

    forms.add(lbl_navn);
    forms.add(txt_navn);
    forms.add(lbl_adresse);
    forms.add(txt_adresse);
    forms.add(Box.createRigidArea(new Dimension(10, 10)));
    forms.add(new JButton("Opret virksomhed"));

在此处输入图像描述

4

3 回答 3

1

我建议你使用gridBagLayout: http ://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

例如:JPanel forms = new JPanel(); forms.setLayout(new GridBagLayout());

    JLabel lbl_navn = new JLabel("Virksomhedsnavn:");
    JTextField txt_navn = new JTextField();

    JLabel lbl_adresse = new JLabel("Adresse:");
    JTextField txt_adresse = new JTextField();
    //Setting grid bag constraints
    GridBagConstraints c = new GridBagConstraints();
    // Grid position coordinates
    c.gridx = 0; c.gridy = 0;
    //Align panel in top-left corner
    c.anchor=GridBagConstraints.LINE_START;
    forms.add(lbl_navn, c);
    c.gridx = 1; c.ipadx = 195;
    forms.add(txt_navn, c);
    c.gridy = 1; c.gridx = 0; c.ipadx = 0;
    forms.add(lbl_adresse, c);
    c.gridx = 1; c.ipadx = 195;
    forms.add(txt_adresse,c);
    c.gridy = 2; c.gridx     = 0; c.ipadx = 0;
    forms.add(Box.createRigidArea(new Dimension(10, 10)),c);


    c.anchor=GridBagConstraints.CENTER;
    c.gridy = 2; c.gridx = 1;
    forms.add(new JButton("Opret virksomhed"),c);

希望这可以帮助。

于 2013-02-14T11:36:24.350 回答
0

前段时间读到了关于 Mig 布局的好东西,我没用过,但看起来很强大。检查此Mig 布局,可能是解决您问题的好方法。

更新: Mig 布局不是来自 sun/oracle 的“标准”布局。

如前所述,GridBagLayout 可以实现您的目标(根据经验)。我个人想要使用固定尺寸的组件来处理“空布局”。

于 2013-02-14T18:24:59.260 回答
0

I think you can refer to this question where useful answers have been given: JTextField Fixed Height

于 2013-02-14T07:51:33.370 回答