import java.awt.*;
import javax.swing.*;
public class MyLayout extends JFrame {
public static final int BLOCKWIDTH=30; //一个格子的大小
JButton[][] blocks;
JPanel gpanel;
JPanel npanel;
public MyLayout()
{
super("Funway's Tetris!");
gpanel=new JPanel();
gpanel.setLayout(new GridLayout(20,12,0,0));
gpanel.setBorder(BorderFactory.createEtchedBorder());
blocks=new JButton[20][12];
for(int i=0;i<20;i++)
{
for(int j=0;j<12;j++)
{
blocks[i][j]=new JButton(String.valueOf(i*12+j));
blocks[i][j].setBackground(Color.LIGHT_GRAY);
blocks[i][j].setBorder(BorderFactory.createEtchedBorder());
blocks[i][j].setSize(BLOCKWIDTH,BLOCKWIDTH);
gpanel.add(blocks[i][j]);
//blocks[i][j].setBounds(i*BLOCKWIDTH, j*BLOCKWIDTH, BLOCKWIDTH, BLOCKWIDTH);
blocks[i][j].setVisible(true);
}
}
getContentPane().setLayout(null);
setSize(30*12,30*20);
getContentPane().add(gpanel);
gpanel.setBounds(0, 0, 20*12, 20*20);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
MyLayout qq=new MyLayout();
}
}
/*********************************************/
本来我想在JPanel里面用GridLayout的布局来布置里面那些JButton的数组.
以为这些按钮会占满这个panel的
但为什么出来的效果却是JPanel的右边和下边都空出来一部分的空间??
感觉JAVA里面布局好象很混乱的样子. 老用不好.. 哪位大哥能指点下...
2 个解决方案
#1
不是JAVA里面布局很混乱
getContentPane().setLayout(null);
setSize(30*12,30*20);
getContentPane().add(gpanel);
gpanel.setBounds(0, 0, 20*12, 20*20);
你用的是绝对布局,gpanelde的大小是被你固定了(gpanel.setBounds(0, 0, 20*12, 20*20);)这样设置的话,而gpanel中的所有组件宽度和高度加起来都没有gpanel的大,当然这些按钮就不会占满这个gpanel了
getContentPane().setLayout(null);
setSize(30*12,30*20);
getContentPane().add(gpanel);
gpanel.setBounds(0, 0, 20*12, 20*20);
你用的是绝对布局,gpanelde的大小是被你固定了(gpanel.setBounds(0, 0, 20*12, 20*20);)这样设置的话,而gpanel中的所有组件宽度和高度加起来都没有gpanel的大,当然这些按钮就不会占满这个gpanel了
#2
为什么gpanel里的组件的宽高和会没有gpanel的大呢?
我不是设置了gpanel的大小正好可以被 12列*20行的组件整除的大小了么??
我不是设置了gpanel的大小正好可以被 12列*20行的组件整除的大小了么??
#1
不是JAVA里面布局很混乱
getContentPane().setLayout(null);
setSize(30*12,30*20);
getContentPane().add(gpanel);
gpanel.setBounds(0, 0, 20*12, 20*20);
你用的是绝对布局,gpanelde的大小是被你固定了(gpanel.setBounds(0, 0, 20*12, 20*20);)这样设置的话,而gpanel中的所有组件宽度和高度加起来都没有gpanel的大,当然这些按钮就不会占满这个gpanel了
getContentPane().setLayout(null);
setSize(30*12,30*20);
getContentPane().add(gpanel);
gpanel.setBounds(0, 0, 20*12, 20*20);
你用的是绝对布局,gpanelde的大小是被你固定了(gpanel.setBounds(0, 0, 20*12, 20*20);)这样设置的话,而gpanel中的所有组件宽度和高度加起来都没有gpanel的大,当然这些按钮就不会占满这个gpanel了
#2
为什么gpanel里的组件的宽高和会没有gpanel的大呢?
我不是设置了gpanel的大小正好可以被 12列*20行的组件整除的大小了么??
我不是设置了gpanel的大小正好可以被 12列*20行的组件整除的大小了么??