现在也写一个动态的界面,上面有不确定个数的 jTextField ,其个数是根据参数的个数确定的,生成界面的代码如下
[code="java"]
for (int j = 0; j<n; j++){
JLabel jLabel = new JLabel();
getContentPane().add(jLabel);
jLabel.setText(identifier.get(j) + "(" + title.get(j)+ ")");
jLabel.setBounds(26, 79 + j*48, 492, 15);
final JTextField jTextField = new JTextField();
getContentPane().add(jTextField);
jTextField.setText("");
[/code]
界面的截图如下
[img]http://dl.iteye.com/upload/attachment/0068/4023/ad70f7a5-84e7-391e-89c7-a5dda9aae3e1.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0068/4025/5b236e57-4d2d-345b-acbf-63319b0b9ba2.jpg[/img]
现在的问题是我不确定如何去获取这些 jTextField 输入的内容,一直没有找到合适的方法。
那个textfield的value是个什么东西,我看,关键是你这里的j,即identifier.get(j),比如:
[code]
private Map fields = new HashMap();
for( j=0;j<n;j++){
...
fields.put(j,jTextField);
}
[/code]
在其他地方就可以通过fields获取到这些JTextField。
简单点的用数组
for (int j = 0; j<n; j++){
JLabel jLabel = new JLabel();
改为
JLabel jLabelArray=new JLabel[n];
for (int j = 0; j<n; j++){
jLabelArray[j] = new JLabel();
这样就能使用下标访问了:jLabelArray[3]
或者使用map
for (int j = 0; j JLabel jLabel = new JLabel();
改为
Map jLabelMap = new HashMap;
for (int j = 0; j<n; j++){
JLabel jLabel = new JLabel();
jLabelMap.put(identifier.get(j),jLabel);
这样就能使用identifier访问了:jLabelMap.get("Tool");