java中的gridbaglayout的简单用法

要知道gridwidth、gridheight表示组件所占据的行数,可以取值int、GridBagConstraints.RELATIVE(取这个值表示这是这一行(或列)的倒数第二个组件)、GridBagConstraints.REMAINDER(这个值表示这个是这一行(或列)的最后一个组件)
下面这些都是领悟api文档后写的,其实看完GridBagLayout的文档,应该都会大致明白,所以重点是api文档

package com.date.num1;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class JFrameGrid extends JFrame {
    private JFrameGrid(){

    }

    //创建界面的方法
    public JPanel createImage(JPanel panel){
        GridBagLayout lay=new GridBagLayout();
        panel.setBackground(Color.green);//设置jpanel的背景颜色为绿色
        panel.setLayout(lay);
        GridBagConstraints c=new GridBagConstraints();//获得此类的对象
        c.fill=GridBagConstraints.BOTH;
        c.weightx=1;
        addButton(panel,lay,c,"按钮一");
        addButton(panel,lay,c,"按钮二");
        addButton(panel,lay,c,"按钮三");
        c.weightx=0;
        c.gridwidth=GridBagConstraints.REMAINDER;//这一行的最后一个按钮
        addButton(panel,lay,c,"按钮四");
        c.gridwidth=1;
        c.gridheight=1;
        addButton(panel,lay,c,"按钮六");
        c.gridwidth=GridBagConstraints.REMAINDER;//这一行的最后一个组件
        c.gridheight=GridBagConstraints.RELATIVE;//这一列的倒数第二个组件
        c.weighty=1;
        c.weightx=1;
        c.gridheight=2;//这个值不是1就行,主要是和按钮六区分开,不然和按钮六一样的高度,按钮六也会填满区域
        addTextArea(panel,lay,c);
        c.gridheight=GridBagConstraints.REMAINDER;
        c.weighty=0;
        c.gridheight=1;
        addButton(panel,lay,c,"按钮五");
        return panel;
    }

    //添加文本区域
    private void addTextArea(JPanel panel, GridBagLayout lay, GridBagConstraints c) {
        JTextArea text=new JTextArea();
        lay.setConstraints(text, c);
        panel.add(text);
    }

    //添加按钮的方法
    private void addButton(JPanel panel,GridBagLayout lay,GridBagConstraints c,String name){
        JButton bt=new JButton(name);
        lay.setConstraints(bt, c);
        panel.add(bt);
    }

    //设置窗体属性
    public void initFrame(){
        Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();//获取电脑屏幕的高宽值
        this.setSize((int)(dim.width*0.3), (int)(dim.height*0.7));
        this.setLocation((int)(dim.width*0.4), 0);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrameGrid frame=new JFrameGrid();
        JPanel panel=new JPanel();
        frame.add(frame.createImage(panel));
        frame.initFrame();
    }

}

结果图
结果图

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值