2011-03-12 35 views
2

好吧,這可能看起來像一個奇怪的問題,但有一個方法,調用類似

jPanel3.getComponent(0).getName();

後,我可以使用該值來做出關於變量的調用。基本上如果它返回說jLabel1。我可以使用它來調用該標籤上的某些內容,例如.setText(「Hi」);而不必輸入jLabel1.setText(「hi」)。含義我可以使用返回的值直接調用它上面的函數。在搖擺使用getComponent()來調用一個變量

回答

1

如果我理解正確的問題,你想是這樣的:

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

這就是我一直在尋找的,非常感謝喬恩,並感謝其他建議保羅 – Puresilence 2011-03-12 16:42:35

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")); 

書面喬恩,你可以投組件到真正的類型,並且不需要名字的原始變量。