微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

swing 布局问题,有兴趣请进,望指教

时间:2014-04-10 09:53  浏览:努力统计中...
我用GridBagLayout布局,想实现以下效果: 但实际上,我得出的结果却是这样: 如下代码,谢谢: importjava.awt.BorderLayout; importjava.awt.GridBagConstraints; importjava.awt.GridBagLayout; importjavax.swing.JB
我用 GridBagLayout 布局,想实现以下效果:

但实际上,我得出的结果却是这样:


如下代码,谢谢:
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
  
@SuppressWarnings("serial")
public class GridBagLayoutExample extends JPanel {
private JButton top    = new JButton() ;
private JButton left   = new JButton() ;
private JButton right1 = new JButton() ;
private JButton right2 = new JButton() ;
public GridBagLayoutExample() {
GridBagLayout gridBag = new GridBagLayout() ;
this.setLayout(gridBag);
GridBagConstraints gridBagC = new GridBagConstraints() ;

gridBagC.fill = GridBagConstraints.HORIZONTAL ;
gridBagC.gridx = 0 ;
gridBagC.gridy = 0 ;
gridBagC.gridwidth = 2 ;
gridBag.setConstraints(top, gridBagC);
this.add(top) ;

gridBagC.gridx = 0 ;
gridBagC.gridy = 1 ;
gridBagC.gridheight = 2 ;
gridBagC.fill = GridBagConstraints.VERTICAL ;
gridBag.setConstraints(left, gridBagC);
this.add(left) ;

gridBagC.gridx = 1 ;
gridBagC.gridy = 1 ;
gridBag.setConstraints(right1, gridBagC);
this.add(right1);

gridBagC.gridx = 1 ;
gridBagC.gridy = 2 ;
gridBag.setConstraints(right2, gridBagC);
this.add(right2);
}
public static void main(String[] args) {
JFrame f = new JFrame("GridBagLayoutExample");
JPanel p = new GridBagLayoutExample();
f.getContentPane().add(p , BorderLayout.CENTER);
f.setSize(230, 230);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}

}

我不懂我错在哪,有兴趣,望指教 !

你一直在用一个GridBagConstraints对象-gridBagC
所以你的top、left、right1、right2都是一个对象

修改 每次都新new一个

    public GridBagLayoutExample() {
        GridBagLayout gridBag = new GridBagLayout() ;
        this.setLayout(gridBag);
        GridBagConstraints gridBagC = new GridBagConstraints() ;
         
        gridBagC.fill = GridBagConstraints.HORIZONTAL ;
        gridBagC.gridx = 0 ;
        gridBagC.gridy = 0 ;
        gridBagC.gridwidth = 2 ;
        gridBag.setConstraints(top, gridBagC);
        this.add(top) ;
         
        gridBagC = new GridBagConstraints() ;
        gridBagC.gridx = 0 ;
        gridBagC.gridy = 1 ;
        gridBagC.gridheight = 2 ;
        gridBagC.fill = GridBagConstraints.VERTICAL ;
        gridBag.setConstraints(left, gridBagC);
        this.add(left) ;
 
        gridBagC = new GridBagConstraints() ;
        gridBagC.gridx = 1 ;
        gridBagC.gridy = 1 ;
        gridBag.setConstraints(right1, gridBagC);
        this.add(right1);
 
        gridBagC = new GridBagConstraints() ;
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------