选择一个布局管理器

问题描述:

我试图设置几个标签和textfields类似于表的样式。选择一个布局管理器

目前我正在使用GridLayout,这种工作正如我想要的那样。但是,TextFields按钮正在扩展到单元的完整大小。

我怎样才能让的TextField按钮“正常”的大小,并且将这个完成的布局管理器的最简单的方法?

下面是当前的代码和截图:

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")); 

enter image description here

+3

我推荐'GridBagLayout'。它为您提供了更多组件如何填充每个单元的能力。请参见[视觉指南](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)和[如何使用GridBagLayout](http://docs.oracle.com/javase /tutorial/uiswing/layout/gridbag.html)了解更多详情 – MadProgrammer 2013-02-14 09:07:47

我建议你使用的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); 

希望这会有所帮助。

我觉得你可以参考这个问题,其中有用的答案已经给出: JTextField Fixed Height

前段时间我读了关于Mig布局的好东西,我从来没有用过,但看起来很强大。 检查这个Mig layout,可能是一个很好的解决您的问题。

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

GridBagLayout如上所述,可以实现你的目标(从经验)。我个人当我想要固定大小的组件使用“空布局”。