java awt 代码_Java awt的代码 请各位帮我看一下问题出在哪里?

本文介绍了在Java中使用GridBagLayout布局管理器创建GUI时遇到的问题及其解决方案。尽管设置了按钮的扩展属性,但在实际运行中,按钮的大小仍会受到周围组件的影响。例如,按钮4和5的宽度、按钮8和9的高度并未如预期那样固定。文章深入探讨了GridBagLayout的工作原理,并展示了如何更精确地控制组件尺寸。
摘要由CSDN通过智能技术生成

按照一本书上敲的,但是运行结果却是这样,下面是代码和运行结果的图。

import java.awt.Button;

import java.awt.Frame;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

public class GridBagTest {

private Frame f=new Frame("测试窗口");

private GridBagLayout gb=new GridBagLayout();

private GridBagConstraints gbc=new GridBagConstraints();

private Button[] bs=new Button[10];

public void init()

{

for(int i=0;i

{

bs[i]=new Button("按钮"+i);

}

//所有组件都可以在横向纵向上扩大

gbc.fill=GridBagConstraints.BOTH;

gbc.weightx=1;

addButton(bs[0]);

addButton(bs[1]);

addButton(bs[2]);

//控制的GUI组件将会成为横向最后一个组件

gbc.gridwidth=GridBagConstraints.REMAINDER;

addButton(bs[3]);

//组件将会在横向上不会扩大

gbc.weightx=0;

addButton(bs[4]);

//该组件将会横跨两个网格

gbc.gridwidth=2;

addButton(bs[5]);

//该组件将横跨一个网格,在纵向上纵跨两个网格 该组件将会成为横向最后一个组件

gbc.gridwidth=1;

gbc.gridheight=2;

gbc.gridwidth=GridBagConstraints.REMAINDER;

addButton(bs[6]);

//横跨一个网格 纵跨两个网格 组件纵向扩大的权重为1

gbc.gridwidth=1;

gbc.gridheight=2;

gbc.weighty=1;

addButton(bs[7]);

//纵向上不会扩大  横向最后一个组件 纵向上横跨一个网格

gbc.weighty=0;

gbc.gridwidth=GridBagConstraints.REMAINDER;

gbc.gridheight=1;

addButton(bs[8]);

addButton(bs[9]);

f.pack();

f.setVisible(true);

}

public void addButton(Button button)

{

gb.setConstraints(button, gbc);

f.add(button);

}

public static void main(String[] args) {

new GridBagTest().init();

}

/**

* 虽然设置了按钮4 按钮5横向上不会扩大,但这两个按钮宽度会受上一行四个按钮的影响,所以实际上他们依然会变大:

* 同理,虽然设置了按钮8,9纵向上不会扩大,但受到7的影响,所以9依然会变大(但8不会变高)

*/

}

fbbd24a35fdac2618a5834d514641356.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值