2013-03-13 37 views
1

如何在gridlayout中设置jbutton的大小?否则按钮大小有很多宽度,并且它不监听setSize或setBounds或setPreferedSize。在gridLayout中设置JButton大小

addBut = new JButton("Add"); 

    addBut.addActionListener(this); 
    deleteBut = new JButton("Delete"); 
    deleteBut.addActionListener(this); 
    selectionPanel = new JPanel(); 
    selectionPanel.setLayout(new GridLayout(2,2)); 
    TitledBorder selectionBorder = new TitledBorder("Options"); 
    selectionBorder.setTitleColor(Color.BLUE); 
    selectionPanel.setBorder(selectionBorder); 
    selectionPanel.add(new JLabel("Department Name")); 
    selectionPanel.add(new JTextField(deptName)); 
    selectionPanel.add(addBut); 
    selectionPanel.add(deleteBut); 

    selectionPanel.setPreferredSize(new Dimension(900,100)); 
+0

为了更快得到更好的帮助,请以'最小'和'更大'的尺寸发布GUI的[SSCCE](http://sscce.org/)和ASCII艺术。 – 2013-03-14 01:19:19

回答

2

我相信设置GridLayout(2,2)将覆盖面板的大小更改。更确切地说,使用GridBagConStraints;

private JTextField field1 = new JTextField(); 
private JButton addBtn = new JButton("Save: "); 

public void addComponents(Container pane) { 
     pane.setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
// Components 
    c.gridwidth = 1; 
    c.weightx = .01; 
    c.weighty = .2; 
    c.gridx = 0; 
    c.gridy = 1; 
    pane.add(field1, c); 

     c.gridwidth = 1; 
    c.weightx = .01; 
    c.weighty = .2; 
    c.gridx = 0; 
    c.gridy = 1; 
    pane.add(addBtn, c); 
} 
public MainView() { 
     //Create and set up the window. 
     JFrame frame = new JFrame("NAME"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Set up the content pane. 
     addComponents(frame.getContentPane()); 

     //Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
     frame.setResizable(false); 
     frame.setSize(400, 125); 
     frame.setLocation(400, 300); 
    } 
+0

如果我设置了约束条件,所有东西都会变成不同的大小,你能不能请更新我的猜测约束代码,我正在寻找标签和textfiled在第一行和2个按钮在下一行。谢谢 – vijay 2013-03-13 15:19:33

0

如果您正在使用GridLayout(); 但希望设置您的组件大小自定义。

然后使用object.setPreferredSize(new Dimension(int,int)); Like below

obj.setPreferredSize(new Dimension(175,90));