首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

有关动态变量的有关问题

2012-04-13 
有关动态变量的问题在JFrame里根据一个值count,new出count个JTextField和JTextArea,用jtextf和jtexta两个

有关动态变量的问题
在JFrame里根据一个值count,new出count个JTextField和JTextArea,用jtextf和jtexta两个数组存放count个组件,在for循环里new出组件,为什么运行后JTextField和JTextArea画不出来?求解~~

Java code
public class MassageMa extends JFrame {     public MassageMa(int count) {        this.setBounds(300, 100, 800, 600);        this.setLayout(null);        this.setVisible(true);                JTextField[] jtextf = new JTextField[count];        JTextArea[] jtexta = new JTextArea[count];                for(int i=1;i<=count;i++){            if(i%2!=0){                jtextf[i-1] = new JTextField("嘿嘿");                jtextf[i-1].setBounds(50, 60+70*(i/2), 70, 30);                jtextf[i-1].setEditable(false);                 this.add(jtextf[i-1]);                                jtexta[i-1] = new JTextArea();                jtexta[i-1].setBounds(145, 60+70*(i/2), 170, 30);                 this.add(jtexta[i-1]);            }            if(i%2==0){                jtextf[i-1] = new JTextField("嘿嘿");                jtextf[i-1].setBounds(385, 60+70*(i/2-1), 70, 30);                jtextf[i-1].setEditable(false);                this.add(jtextf[i-1]);                                jtexta[i-1] = new JTextArea();                jtexta[i-1].setBounds(480, 60+70*(i/2-1), 170, 30);                this.add(jtexta[i-1]);            }        }    }}


[解决办法]
public static void main(String args[]){
new MassageMa(10);
}
没发现什么问题,楼主是因为没加main方法吗?
[解决办法]
我记得还要加个Jpanel,太久没用swing了
[解决办法]
…… 没看出这个问题和动态变量有什么关系……

控件全部添加完成后再setVisible,不然setVisible后面添加的控件不会马上显示,除非强制重绘(resize、最小化……)

PS:Windows API里有个update函数可以强制重绘(生成WM_PAINT消息)的,不知道在swing里怎么实现的。

Java code
public class MessageMa extends JFrame {    public MessageMa(int count) {        this.setBounds(300, 100, 800, 600);        this.setLayout(null);        this.setTitle("HaHa");        JTextField[] jtextf = new JTextField[count];        JTextArea[] jtexta = new JTextArea[count];        for (int i = 0; i < count; i++) {            if (i % 2 == 0) {                jtextf[i] = new JTextField("嘿嘿");                jtextf[i].setBounds(50, 60 + 70 * ((i + 1) / 2), 70, 30);                jtextf[i].setEditable(false);                this.add(jtextf[i]);                jtexta[i] = new JTextArea();                jtexta[i].setBounds(145, 60 + 70 * ((i + 1) / 2), 170, 30);                this.add(jtexta[i]);            } else {                jtextf[i] = new JTextField("嘿嘿");                jtextf[i].setBounds(385, 60 + 70 * ((i + 1) / 2 - 1), 70, 30);                jtextf[i].setEditable(false);                this.add(jtextf[i]);                jtexta[i - 1] = new JTextArea();                jtexta[i - 1].setBounds(480, 60 + 70 * ((i + 1) / 2 - 1), 170,                        30);                this.add(jtexta[i - 1]);            }        }        this.setVisible(true);    }    public static void main(String[] args) {        new MessageMa(10);    }} 

热点排行