【问题标题】:Java/Netbeans -- Reference a jTextfield dynamically?Java/Netbeans -- 动态引用 jTextfield?
【发布时间】:2016-02-09 09:14:00
【问题描述】:

不确定这是否可能,但是......

我有一个带有 10 个不同文本字段的 jFrame。依次命名为 tf1、tf2、tf3...

我想做的是能够动态引用它们。比如:

int i = 1;

while (i<11) {
    tf[i].settext("blah - " + i);
}

有什么想法吗?如果有人知道一个工作示例,那就太好了。

【问题讨论】:

  • 为什么不在程序开始时将 10 个文本字段存储在一个数组中?如果数组名称为“tf”,此代码将起作用
  • 我真的不知道该怎么做...我的意思是我可以使用数组(即:String、int、doubles...),但您是在谈论创建一个 textFields 数组在运行时或以某种方式将我面板上的现有文本字段存储在一个数组中?
  • I can work with arrays (ie: String, int, doubles...), - 那么为什么 JTextFields 数组会有所不同呢? are you talking about creating an array of textFields at runtime - 如果您想使用数组(任何类型),那么您需要创建数组。因此,您创建了数组,使用循环创建文本字段并将文本字段添加到数组和面板。
  • 嘿,谢谢。在您的描述和下面的答案之间,我很确定我可以解决。谢谢!

标签: java netbeans dynamic jtextfield


【解决方案1】:

如果你想在一个JFrame中设置所有文本字段的文本:

Component ca[] = getContentPane().getComponents();
System.out.println("ca = " + Arrays.toString(ca));
int i = 0;
for(Component c: ca) {
    if(JTextField.class.isAssignableFrom(c.getClass())) {
        JTextField tf = (JTextField) c;
        tf.setText("blah -"+(++i));
    }
}

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多