2012-04-22 2 views

ответ

8

это перебрать все компоненты внутри ContentPane вашего JFrame и распечатать их на консоль:

public void listAllComponentsIn(Container parent) 
{ 
    for (Component c : parent.getComponents()) 
    { 
     System.out.println(c.toString()); 

     if (c instanceof Container) 
      listAllComponentsIn((Container)c); 
    } 
} 

public static void main(String[] args) 
{ 
    JFrame jframe = new JFrame(); 

    /* ... */ 

    listAllComponentsIn(jframe.getContentPane()); 
} 
+0

Спасибо за ответ, он работает. Что странно, так это то, что я не могу ничего сделать с этими компонентами. Внутри цикла for у меня есть это условие: if (c instanceof JTextField) { JTextField j = (JTextField) c; System.out.println (j); j.setText ("ABCD"); } Он печатает строчку j, но не устанавливает текст, какие-либо идеи? –

+0

* «любые идеи?» * 1) Задайте другой (новый) вопрос. 2) Добавьте [SSCCE] (http://sscce.org/). 3) Объясните случай использования, необходимость, для этого необычного требования. 4) Убедитесь, что обновление сделано на EDT. –

0

Следующий код будет очистить все текстовых полей JTextField в виде JFrame с помощью цикла For

Component component = null; // Stores a Component 

Container myContainer; 
myContainer = this.getContentPane(); 
Component myCA[] = myContainer.getComponents(); 

for (int i=0; i<myCA.length; i++) { 
    JOptionPane.showMessageDialog(this, myCA[i].getClass()); // can be removed 
    if(myCA[i] instanceof JTextField) { 
    JTextField tempTf = (JTextField) myCA[i]; 
    tempTf.setText(""); 
    } 
} 
Смежные вопросы