我想把按钮固定为27像素长宽的正方形.无论把gridwidth=1;gridheight=1;改成什么值都不行啊~~~~~~~~~~~~~import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class Feel { public Feel()
{
JPanel panel4= new JPanel();
GridBagLayout gridbag=new GridBagLayout();
panel4.setLayout(gridbag);
JPanel pz= new JPanel(new GridLayout(4,4));
GridBagConstraints c;
int gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;
double weightx,weighty;
Insets inset;


JFrame f=new JFrame();


Container contentPane=f.getContentPane();


for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
JButton b=new JButton();
gridx=i;
gridy=j;
gridwidth=1;
gridheight=1;
weightx=0;
weighty=0;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.NONE;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(b, c);
pz.add(b);

}

panel4.add(pz);
panel4.setBackground(Color.blue);
contentPane.add(panel4);
f.setSize(400, 291);
f.pack();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}});
f.setVisible(true);
f.setResizable(false);
}

public static void main(String args[])
{
new Feel();
}


}

解决方案 »

  1.   

    应该是你设了布局管理器的缘故,如果你想亲自设置组件的大小或位置,可以用"setLayout(null)",取消布局管理器,我把你的程序改成这样就好了.不过按钮很大哦
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class Feel { public Feel()
    {
    JPanel panel4= new JPanel();
    panel4.setSize(400, 400);
    panel4.setLayout(null);
    JPanel pz= new JPanel(new GridLayout(4,4));
    pz.setSize(400, 400);
    GridBagConstraints c;
    Insets inset;


    JFrame f=new JFrame();


    Container contentPane=f.getContentPane();


    for(int i=0;i<4;i++)
    for(int j=0;j<4;j++)
    {
    JButton b=new JButton();
    pz.add(b);
    }

    panel4.add(pz);
    panel4.setBackground(Color.blue);
    contentPane.add(panel4);
    f.setSize(400, 400);
    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);}});
    f.setVisible(true);
    f.setResizable(false);
    }

    public static void main(String args[])
    {
    new Feel();
    }


    }
      

  2.   

    package com.explor.topo.framework.menubar.InfoBar;import java.awt.Color;
    import java.awt.Dimension;import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class test extends JFrame{
    test(){
    this.setLayout(null);
    JPanel jpanel1=new JPanel();
    jpanel1.setBorder(BorderFactory.createLineBorder(Color.red, 1));
    jpanel1.setBounds(10, 10, 200, 200);
    this.add(jpanel1);
    this.setSize(800,600);
    this.setVisible(true);
    }
    public static void main(String[] args) {
    new test();
    }
    }