这是个APPLET程序使用布局器时,用数组添加到PANEL中,但程序无法初始化问题代码已经注明import java.awt.*;
import javax.swing.*;
public class layout extends JApplet
{
GridLayout g1;
GridBagLayout gb1;
BoxLayout b1;
GridBagConstraints gbc;


JPanel calPane,logPane;
JPanel mainPane;////这里,定义一个BUTTON数组 JButton btn[16];
public void init()
{
g1 = new GridLayout(8,2);
calPane = new JPanel();
calPane.setLayout(g1);
/////////////////这里开始初始化,加了BUTTON这些代码后就无法初始化了
btn = new JButton[16];
for(int i = 0; i<=15;i++)
    calPane.add(btn[i]);
/////////////////////////////////////////
calPane.add(btn1);
calPane.add(btn2);
gb1 = new GridBagLayout();
gbc = new GridBagConstraints();
logPane = new JPanel();
logPane.setLayout(gb1); mainPane = new JPanel();
b1 = new BoxLayout(mainPane,BoxLayout.X_AXIS);
b1.addLayoutComponent("Calculator",calPane);
b1.addLayoutComponent("Text",logPane);
getContentPane().add(mainPane);
mainPane.add(calPane);
mainPane.add(logPane);
}
}再问一下,如何设置JPANEL的大小,以及控件里的大小?
貌似在JAPPLET中用setBounds行不通.
JFRAME好象也不可以..

解决方案 »

  1.   

    JButton btn[]; // 声明的时候不用写16for(int i = 0; i<=15;i++) // 循环中没有构造每个按钮
        calPane.add(btn[i]);for(int i = 0; i<=15;i++) { // 应该这样
        btn[i] = new JButton("Button_" + (i + 1));
        calPane.add(btn[i]);
    }calPane.add(btn1); // 应该是 calPane.add(btn[0]);
    calPane.add(btn2); // 应该是 calPane.add(btn[1]);
      

  2.   

    控件的Size和控件上层容器的布局管理器有关,先学学布局吧。
      

  3.   

    回一楼,谢了
    再问一个
    btn = new JButton[16];用这一句不可以构造16个吗?那怎样布局?例如确定这16个孔件大小一样,但可调的而且PANEL大小可以在程序设置?
      

  4.   

    btn = new JButton[16]; 这相当于声明了16个JButton的变量,但是没有初始化,如下:
    JButton btn1,btn2,btn3,btn4,.....btn16;
    所以你还是需要初始化这16个按钮:
    for(int i = 0; i < btn.length; i++){
        btn[i] = new JButton("Button" + (i + 1));
    }
      

  5.   

    布局管理器可不是一两句就能给你讲清楚的,比较麻烦,而且根据需求的不同,多种布局要相互嵌套才能做出理想的效果,你还是先把AWT中的几种基本布局学一下再说吧。
      

  6.   

    你是想把16个按钮排列出4*4的方阵?
    calPane = new JPanel(new GridLayout(4, 4)); // 用GridLayout布局,替换这句就可以了
      

  7.   

    就是能在程序中确定了calPane的大小,然后放在任意的位置