import java.awt.*;
import java.awt.event.*;
public class bug extends Frame { /** Creates new bug */
public bug() {
ScrollPane pane=new ScrollPane();
Panel p=new Panel();
p.setLayout(new GridLayout(0,1,0,0));
for (int i=0;i<2000;i++){
p.add(new Button("Button "+i));
}
pack();
pane.add(p);
add(pane);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
}
public static void main(String []argv){
bug b=new bug();
b.setVisible(true);
}}
在JDK 1.3.0_02在没有报异常,但无法正确显示,我加入了2000个button, 但只显示了1400多个
import java.awt.event.*;
public class bug extends Frame { /** Creates new bug */
public bug() {
ScrollPane pane=new ScrollPane();
Panel p=new Panel();
p.setLayout(new GridLayout(0,1,0,0));
for (int i=0;i<2000;i++){
p.add(new Button("Button "+i));
}
pack();
pane.add(p);
add(pane);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
}
public static void main(String []argv){
bug b=new bug();
b.setVisible(true);
}}
在JDK 1.3.0_02在没有报异常,但无法正确显示,我加入了2000个button, 但只显示了1400多个
gbc.fill=BOTH;gbc.weightx=1;gbc.weighty=0;gbc.gridx=0;
gbc.gridy=i;
出现异常::如下
java.lang.ArrayIndexOutOfBoundException:
at java.awt.GridBagLayout.GetLayoutInfo()
at java.awt.GridBagLayout.preferredLayoutSize()
at.java.awt.Container.preferredSize();...............................
//希望有人能有更详细的解释.
import java.awt.*;
import java.awt.event.*;public class bug extends Frame { /** Creates new bug */
public bug() {
ScrollPane pane=new ScrollPane();
Panel p=new Panel();
p.setLayout(new GridLayout(0,1,0,0));
for (int i=0;i<2000;i++){
p.add(new Button("Button "+i));
//加入这样一行.
System.out.println("Button "+i);
}
pack();
pane.add(p);
add(pane);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
}
public static void main(String []argv){
bug b=new bug();
b.setVisible(true);
}}
我猜想是由于在Container控制的面积,而不是控制的Component的数目上有一个限制,导致
出错或是异常