本人正在学习布局管理器,尤其是对这个GridBagLayout想能用好,可结果这一个简单的东西都弄不出来,在此惭愧
我想要的结构是这样的:
----------------------
|             |       |
-----------------------一个一行四列的表格,左边的单元格占三列,右边的占一列
单元格的组件放的是两个JPanel
常量设置panel1的gridx=0,gridy=0,gridwidth=3,gridheight=1
常量设置panel2的gridx=3,gridy=0,gridwidth=1,gridheight=1
按道理说应该能出来上述结构,但是我这里出来的是左右两个单元格各占两列,也就是说实际的列数跟组件个数也有些关联
下面是我的代码:import java.awt.*;
import javax.swing.*;
public class Demo extends JFrame{

private final int WIDTH = 500 ;
private final int HEIGHT = 300 ;
public Demo(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds((Toolkit.getDefaultToolkit().getScreenSize().width - WIDTH) / 2,((Toolkit.getDefaultToolkit().getScreenSize().height - HEIGHT)) / 2,WIDTH,HEIGHT); /////////////set layout///////////////
Container cont = getContentPane();
GridBagLayout layout = new GridBagLayout(); layout.columnWidths=new int[]{3,3,1};
cont.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx=1.0;
c.weighty=1.0; JPanel p1 = new JPanel();
p1.setBorder(BorderFactory.createLineBorder(Color.RED)); JPanel p2 = new JPanel();
p2.setBorder(BorderFactory.createLineBorder(Color.RED)); c.gridx=0 ;
c.gridy=0 ;
c.gridwidth=3;
c.gridheight=1;
cont.add(p1,c);

c.gridx=3 ;
c.gridy=0 ;
c.gridwidth=1;
c.gridheight=1;
cont.add(p2,c);
} public static void main(String[] args){
new Demo().setVisible(true);
}
}
虽然用jsplitpanel也可以达到,但是我这里想知道的是在GridBagLayout中为什么会出现上述情况呢,是我漏掉了一些设置,或者代码有问题吗?
求解!