gridbaglayout java_java swing 中的Gridbaglayout

初学javaswing,在看到gridbaglayout时,有个例子无法理解。我不能理解的是,gridbaglayout都没有设置整个容器几行几列,那么在调用add方法是,头两个参数,如0,0或2,3有什么意义啊?i...

初学java swing, 在看到gridbaglayout时,有个例子无法理解。

我不能理解的是,gridbaglayout 都没有设置整个容器几行几列,那么在调用add方法是,头两个参数,如0,0 或 2,3有什么意义啊?

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class test7 extends JPanel//此处类继承了JPanel类

{

static final int WIDTH=300;

static final int HEIGHT=150;

JFrame loginframe;

public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)

{//此方法用来添加控件到容器中

constraints.gridx=x;

constraints.gridy=y;

constraints.gridwidth=w;

constraints.gridheight=h;

add(c,constraints);

}

test7()

{

loginframe=new JFrame("信息管理系统"); //设置顶层容器

loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置其顶层容器的关闭性

GridBagLayout lay=new GridBagLayout();//创建网格组布局方式对象

setLayout(lay);

loginframe.add(this, BorderLayout.WEST);

loginframe.setSize(WIDTH,HEIGHT);

Toolkit kit=Toolkit.getDefaultToolkit();//设置顶层容器框架为居中

Dimension screenSize=kit.getScreenSize();

int width=screenSize.width;

int height=screenSize.height;

int x=(width-WIDTH)/2;

int y=(height-HEIGHT)/2;

loginframe.setLocation(x,y);

JButton ok=new JButton("确认");

JButton cancel=new JButton("放弃");

JLabel title=new JLabel("布局管理器测试窗口");

JLabel name=new JLabel("用户名");

JLabel password=new JLabel("密 码");

final JTextField nameinput=new JTextField(15);

final JTextField passwordinput=new JTextField(15);

GridBagConstraints constraints=new GridBagConstraints();

constraints.fill=GridBagConstraints.NONE;

constraints.anchor=GridBagConstraints.EAST;

constraints.weightx=3;

constraints.weighty=4;

add(title,constraints,0,0,4,1); //使用网格组布局添加控件

add(name,constraints,0,1,1,1);

add(password,constraints,0,2,1,1);

add(nameinput,constraints,2,1,1,1);

add(passwordinput,constraints,2,2,1,1);

add(ok,constraints,0,3,1,1);

add(cancel,constraints,2,3,1,1);

loginframe.setResizable(false);

loginframe.setVisible(true);

}

}

public class test7

{

public static void main(String[] args)

{

login log=new login();

}

}

展开

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridBagLayoutJava最灵活和最复杂的布局管理器之一,它可以让开发者在窗口创建复杂的布局。它提供了一个网格和一个包含网格的单元格,网格的每个单元格都可以放置一个组件,而单元格的大小可以根据需要进行调整。 GridBagLayout布局管理器的实现非常灵活,允许您将组件放置在网格的任何位置,并根据需要为它们分配任意数量的行和列。由于其灵活性,使用GridBagLayout可能会比其他布局管理器更具挑战性,但是一旦掌握了它,您就可以创建出非常复杂的布局。 下面是一个简单的Java应用程序,用于演示如何使用GridBagLayout布局管理器: ```java import java.awt.*; import javax.swing.*; public class GridBagLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("GridBagLayout Demo"); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("Name:"), gbc); gbc.gridx = 1; gbc.gridy = 0; panel.add(new JTextField(20), gbc); gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("Address:"), gbc); gbc.gridx = 1; gbc.gridy = 1; panel.add(new JTextField(20), gbc); frame.add(panel); frame.setSize(300, 200); frame.setVisible(true); } } ``` 在这个示例应用程序,我们首先创建一个JFrame和一个JPanel。然后,我们将JPanel的布局管理器设置为GridBagLayout。 接下来,我们创建一个GridBagConstraints对象,并设置它的insets属性为一个Insets对象。Insets对象是一个包含四个整数值的对象,它们分别表示组件之间的左、上、右、下边距。在这个示例,我们将insets设置为5像素。 然后,我们使用gbc对象来指定每个组件的网格坐标,即它们应该在网格的哪个位置。我们还可以使用gbc对象来指定每个组件应该占用的行和列的数量。 最后,我们将所有组件添加到JPanel,并将JPanel添加到JFrame。我们还设置了JFrame的大小并使其可见。 这只是GridBagLayout的一个简单示例,但它应该足以让您开始使用这个灵活的布局管理器。要深入了解GridBagLayout的更复杂的特性和用法,请参阅Java官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值