创建动态控件如下:
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);