2016-02-11 5 views
1

У меня есть JPanel (первая JPanel), и он заполняется другим JPanel (второй JPanel).Как получить компоненты JPanel, которые внутри другого JPanel в java

Я добавляю эту вторую JPanel для первого JPanel программно. Как ниже,

firstJPanel.removeAll(); 
JPanel secondJPanel = new JPanel(gridLayout); 
secondJPanel.setBorder(new TitledBorder("Testing")); 
secondJPanel.setName("secondJPanel"); 
firstJPanel.add(secondJPanel); 
firstJPanel.revalidate(); 

Второй JPanel имеет некоторые компоненты, такие как JTextFields, компоненты JCheckBox и т.д. Я пытаюсь получить эти компоненты. Но я мог получить только второй JPanel.

Вот мой пример кода,

Component[] components = firstJPanel.getComponents(); 
for(int i=0;i<components.length;i++){ 
    System.out.println("Componenet name - " + components[i].getName());   
} 

ли какие-либо iedas, чтобы получить компоненты внутри второго JPanel.

С наилучшими пожеланиями.

+0

secondJPanel.getComponents()? –

+0

@javy: - Есть много JPanels внутри первой JPanel. Вот почему я использую цикл, чтобы получить все JPanels внутри первого JPanel. – Barrier

+0

@javy: - Так что ваше предложение не работает для меня. – Barrier

ответ

3

Вы можете использовать как

Component[] components = firstJPanel.getComponents(); 
for (int i = 0; i < components.length; i++) { 
    System.out.println("Componenet name - " + components[i].getName()); 
    if (components[i] instanceof JPanel 
      && components[i].equals(secondJPanel)) { 

     Component s[] = ((JPanel) components[i]).getComponents(); 
     for (int j = 0; j < s.length; j++) { 
      System.out.println("Sub Componenet name - " + s[j].getName()); 
     } 
    } 
} 
+1

Я исправляю ответ и принимаю его как свой ответ. – Barrier

+0

Петля, чтобы найти компонент, который равен 'secondJPanel' ... пока у вас уже есть ссылка на' secondJPanel'. Это не кажется вам лишним? –

+0

@TT. Это просто пример, здесь может быть 'getName(). Equals()'. Вообще этот подход сам по себе лишний. – ashiquzzaman33

Смежные вопросы