日期:2014-05-20  浏览次数:20693 次

动态创建控件问题!!!!!!!!!!!!!!!!!!!!!!!!!(急)
创建动态控件如下:
import   javax.swing.JFrame;
import   javax.swing.JLabel;
import   javax.swing.JTextField;


public   class   test   extends   JFrame   {

private   JTextField   textField;
/**
  *   Launch   the   application
  *   @param   args
  */
public   static   void   main(String   args[])   {
try   {
test   frame   =   new   test();
frame.setVisible(true);
}   catch   (Exception   e)   {
e.printStackTrace();
}
}

/**
  *   Create   the   frame
  */
public   test()   {
super();
getContentPane().setLayout(null);

int   top=30;

for   (int   i=0;i <4;i++){
top=top+30;
setBounds(100,   top,   500,   375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final   JLabel   label   =   new   JLabel();
label.setText( "JLabel "+i);
label.setBounds(54,   top,   57,   16);
getContentPane().add(label);

textField   =   new   JTextField( "text "+i);
textField.setBounds(129,   top,   85,   21);
getContentPane().add(textField);
}

//
}

}

但是有一点问题:如何读取每个TEXT里输入的值啊。这里控件名称都是textField   啊.

------解决方案--------------------
public Component getComponent(int n)获取此容器中的第 n 个组件。
还有 不是控件的名称都是textField 而是textField引用了他们 循环里只有他的最后一次引用对你现在的操作是有效的 也就是textField所对应的控件是最后那个new JTextField()
------解决方案--------------------
getContentPane().getComponent(int n)
------解决方案--------------------
既然是要创建四个文本框 为什么不用数组 JTextField textField[];
------解决方案--------------------
那就每次创建之后都加入一个集合里 用的时候在到里面取吧
------解决方案--------------------
看看java帮助文档 可以用Vector List 都可以
Vector vector=new Vector();
...
vector.add(obj);
vector.get(index);