有关动态变量的问题

wjqwei 2012-04-07 11:22:08
在JFrame里根据一个值count,new出count个JTextField和JTextArea,用jtextf和jtexta两个数组存放count个组件,在for循环里new出组件,为什么运行后JTextField和JTextArea画不出来?求解~~

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]);
}
}

}

}

...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alexander 2012-04-08
  • 打赏
  • 举报
回复
…… 没看出这个问题和动态变量有什么关系……

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

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


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);
}
}
wjqwei 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

…… 没看出这个问题和动态变量有什么关系……

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

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

Java code

public class MessageMa……
[/Quote]
suwei2002说得对,我一开始一直以为是组件数组出了问题,所以以为是动态变量那里写错了。刚用windowbuilder插件,自动生成的代码很死板,忽略了setVisible的位置,粗心了,谢谢哈~
creso 2012-04-07
  • 打赏
  • 举报
回复
我记得还要加个Jpanel,太久没用swing了
sdojqy1122 2012-04-07
  • 打赏
  • 举报
回复
public static void main(String args[]){
new MassageMa(10);
}
没发现什么问题,楼主是因为没加main方法吗?

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧