在swing中使用getComponent()来调用变量

时间:2011-03-12 09:56:55

标签: java swing netbeans

好吧这可能看起来像一个奇怪的问题,但是有一种方法可以在调用类似的事之后发出一种方式jPanel3.getComponent(0).getName();

我可以用这个值来制作对变量的调用。基本上如果它返回说jLabel1。我可以使用它来调用该标签上的某些内容,例如.setText(“Hi”);而不必键入jLabel1.setText(“hi”)。我可以使用返回值直接调用函数的含义。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,你需要这样的东西:

Component c=jPanel3.getComponent(0);
if (c instanceof JLabel)
    ((JLabel)c).setText("hi");

答案 1 :(得分:1)

组件的name属性(即getName()setName())与您在创建时使用的变量无关。例如,您可以这样做(但不要,因为这非常令人困惑):

Component textField1 = new JLabel("text");
textField1.setName("comboBox1");
System.out.println(textField1.getName()); // comboBox1

无法返回到您的textField1名称 - 当您调用getName()方法时,该变量可能甚至不再存在。您甚至可以在不使用显式变量的情况下创建(和使用)组件,如下所示:

panel.add(new JLabel("text"));

由Jon编写,您可以将组件强制转换为实际类型,而不需要原始变量的名称。