Java图形化界面设计——布局管理器之GridBagLayout

GridBagLayout 不会随着窗口的变化标签随之发生变化,可固定。

----------------------------------------------------------
 
import java.awt.Button;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class GridBagEx2 extends  JPanel
{
    private static final long serialVersionUID = -5214441555967215113L;
 
    protected void makebutton(String name, GridBagLayout gridbag,
            GridBagConstraints c)
    {
        Button button = new Button(name);
        gridbag.setConstraints(button, c);
        add(button);
    }
 
    public void init()
    {
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
 
        setFont(new Font("SansSerif", Font.PLAIN, 14));
        setLayout(gridbag);
 
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1.0;
        makebutton("Button1", gridbag, c);
        makebutton("Button2", gridbag, c);
        makebutton("Button3", gridbag, c);
 
        c.gridwidth = GridBagConstraints.REMAINDER; //end row
        makebutton("Button4", gridbag, c);
 
        c.weightx = 0.0; //reset to the default
        makebutton("Button5", gridbag, c); //another row
 
        c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
        makebutton("Button6", gridbag, c);
 
        c.gridwidth = GridBagConstraints.REMAINDER; //end row
        makebutton("Button7", gridbag, c);
 
        c.gridwidth = 1; //reset to the default
        c.gridheight = 2;
        c.weighty = 1.0;
        makebutton("Button8", gridbag, c);
 
        c.weighty = 0.0; //reset to the default
        c.gridwidth = GridBagConstraints.REMAINDER; //end row
        c.gridheight = 1; //reset to the default
        makebutton("Button9", gridbag, c);
        makebutton("Button10", gridbag, c);
 
        setSize(300, 100);
    }
 
    public static void main(String args[])
    {
        JFrame f = new JFrame("GridBag Layout Example");
        f.setLocation(400, 200);
        GridBagEx2 ex1 = new GridBagEx2();
 
        ex1.init();
 
        f.add("Center", ex1);
        f.pack();
        f.setSize(f.getPreferredSize());
        f.setVisible(true);
        f.addWindowListener(new WindowAdapter()
        {
 
            @Override
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
             
        });
    }
 
}

时间: 2024-12-24 15:43:23

Java图形化界面设计——布局管理器之GridBagLayout的相关文章

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局). 2)       再调用组件的setBounds(int x, int y, int width,int

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式为:从上到下,从左到右. l  组件放入容器的次序决定了它在容器中的位置. l  容器大小改变时,组件

三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件. 1.  CardLayout类的常用构造函数及方法 2.  使用CardLayout类提供的方法可以切换显

Java图形化界面设计——布局管理器之FlowLayout(流式布局)

一.布局管理器所属类包 所属类包 布局管理器名称 说明 Java.awt FlowLayout(流式布局) 组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列 BorderLayout(边界布局) 容器划分为东.西.南.北.中五个区域,每个区域只能放置一个组件. GridLayout(网格布局) 容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件. CardLayout(卡片布局) 如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌.适用于在一

转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址

http://blog.csdn.net/liujun13579/article/details/7771191 前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性. 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器. 一.布局管理器所属类包 所属类包 布局管理器名称 说明 Jav

03 Java图形化界面设计——布局管理器之FlowLayout(流式布局)

前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性. 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器. 一.布局管理器所属类包 所属类包 布局管理器名称 说明 Java.awt FlowLayout(流式布局) 组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一

Java图形化界面设计——布局管理器之CardLayout(卡片布局)

卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件. 1.  CardLayout类的常用构造函数及方法 2.  使用CardLayout类提供的方法可以切换显示该空间中的组件 方法一步骤: (1)      定义使用卡片布局的容器 例如:Panel cardPanel=new Panel(); (2)      定义卡片对象:CardLayout 布局对象

三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次相应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),例如以下图所看到的. 特征: l  能够把组件放在这五个位置的随意一个,假设未指定位置,则缺省的位置是CENTER. l  南.北位置控件各占领一行,控件宽度将自己主动布满整行.东.西和中间位置占领一行;若东.西.南.北位置无控件,则中间控件将自己主动布满整个屏幕.若东.西.南.北位置中不管

04 Java图形化界面设计——布局管理器之BorderLayout(边界布局)

边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),如下图所示. 特征: l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER. l  南.北位置控件各占据一行,控件宽度将自动布满整行.东.西和中间位置占据一行;若东.西.南.北位置无控件,则中间控件将自动布满整个屏幕.若东.西.南.北位置中无论哪个位置没有控件