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个按钮 代码如下的主要内容,如果未能解决你的问题,请参考以下文章

安卓网格布局如何用java代码实现跨多行跨多列

JAVA 网格布局管理器

顺风网格布局

Java实验--基于Swing的简单的歌曲信息管理系统

如何创建可重用的 WPF 网格布局

Java Swing 图形界面开发(目录)