java swing网格布局问题 我定义了一个6行10列的网格 想在里面添加60个按钮 代码如下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing网格布局问题 我定义了一个6行10列的网格 想在里面添加60个按钮 代码如下相关的知识,希望对你有一定的参考价值。
java swing网格布局问题 我定义了一个6行10列的网格 想在里面添加60个按钮 代码如下 可是不显示按钮
你往panel里面加button的函数没有被调用,也就是init函数没有被执行,
你在main函数中new jdttest();只会调用jdttest类的构造函数public jdttest()
不会调用public void init()函数,所以button数组没有加到panel中,自然就没显示.
解决办法 你在构造函数public jdttest()中panel.setLayout(new GridLayout(6,10));后面
调用一下public void init()函数,就行了.
完整的Java程序如下(改动的地方见注释)
import java.awt.BorderLayout;import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class jdttest extends JFrame
JButton button[][]=new JButton[6][10];
JPanel panel=new JPanel();
public jdttest()
this.setSize(900,630);
this.setLayout(new BorderLayout());
panel.setLayout(new GridLayout(6,10));
panel.setBounds(150, 50, 600,360);
init(); //这里加一句调用init()函数
this.add(panel,BorderLayout.CENTER);
this.setVisible(true);
public void init()
for(int cols=0;cols<6;cols++)
for(int rows=0;rows<10;rows++)
button[cols][rows]=new JButton("7");
panel.add(button[cols][rows]);
public static void main(String[] args)
new jdttest();
追问
谢谢!那假如要添加的是图片按钮怎么办呢?
for (int rows = 0; rows < 10; rows++)
button[cols][rows] = dl11;
这样为什么不对呢?
追答你的图片文件dlam1.png是放在bin文件夹下的image文件夹下吗?
就是放在项目名/bin/image文件夹下,如果没错,那就没问题了.
否则,你的JButton会因为找不到图片,而没有图片显示.
是在bin目录下 这个没问题
button[cols][rows] = dl11;
它显示这一句有问题 dl11有问题
追答你把JButton的定义放到for-rows循环中,象这样
for(int cols=0;cols<6;cols++)for (int rows = 0; rows < 10; rows++)
JButton dl11=new JButton();
java.net.URL imageURL =getClass().getResource("images/dlam1.png");
dl11.setIcon(new ImageIcon(imageURL));
button[cols][rows] = dl11;
应该就可以了.
还是不行怎么办呢?
已经放进去for循环了
是我弄错了 谢谢!已经解决了
但是您能告诉我为什么要放进去for循环才行吗
参考技术A this.setVisible(true)放最后!!!java中界面设计的网格布局怎样设计边距
GridLayout有三种构造方法。第三种方法可以设计边距构造方法详细信息
1。GridLayout
public GridLayout()
创建具有默认值的网格布局,即每个组件占据一行一列。
从以下版本开始:
JDK1.1
2。GridLayout
public GridLayout(int rows,
int cols)
创建具有指定行数和列数的网格布局。给布局中的所有组件分配相等的大小。
rows 和 cols 中的一个可以为零(但不能两者同时为零),这表示可以将任何数目的对象置于行或列中。
参数:
rows - 该 rows 具有表示任意行数的值零。
cols - 该 cols 具有表示任意列数的值零。
3。GridLayout
public GridLayout(int rows,
int cols,
int hgap,
int vgap)
创建具有指定行数和列数的网格布局。给布局中的所有组件分配相等的大小。
此外,将水平和垂直间距设置为指定值。水平间距将置于列与列之间。将垂直间距将置于行与行之间。
rows 和 cols 中的一个可以为零(但不能两者同时为零),这表示可以将任何数目的对象置于行或列中。
所有 GridLayout 构造方法都服从这一规定。
参数:
rows - 该 rows 具有表示任意行数的值零
cols - 该 cols 具有表示任意列数的值零
hgap - 水平间距
vgap - 垂直间距
抛出:
IllegalArgumentException - 如果将 rows 和 cols 的值都设置为零 参考技术A GridLayout gl = new GridLayout(2,2);//设置一个2行2列的网格布局模式
gl.setHgap(int a);//设置组件之间的水平距离
gl.setVgap(int b);//设置组件之间的垂直距离追问
有没有用一个函数解决的啊?
追答额,,我不知道,我也才学了时间不长
追问哦,我找到了,用它setLayout(new GridLayout(1,4,5,5));
追答多谢告诉我,
本回答被提问者采纳以上是关于java swing网格布局问题 我定义了一个6行10列的网格 想在里面添加60个按钮 代码如下的主要内容,如果未能解决你的问题,请参考以下文章