2014-01-28 2 views
0

У меня есть LayeredPane2 с компонентами mant, такими как jlabels, jbutton и т. Д. Я хочу закодировать компоненты и если компонент Jlabel, получите его текст. Как я могу это сделать? Вот мой код до сих пор:Получить текст, если компонент jlabel

//search the components 
    for (int j=0; j<jLayeredPane2.getComponents().length; j++){ 
    //if it is a jlabel 
    if ("class javax.swing.JLabel".equals(jLayeredPane2.getComponent(j).getClass().toString())){ 
     //HOW DO I GET THE LABEL TEXT?? 
    } 
    } 

ответ

2

Вы хотите instanceof ключевое слово, а затем бросок:

if(jLayeredPane2.getComponent(j) instanceof JLabel) { 
    JLabel label = (JLabel)jLayeredPane2.getComponent(j); 
    String text = label.getText(); 
    //...Then do whatever you want to do with said text. 
} 
+1

Спасибо. Я попробовал, и это нормально – geo

2

Согласно JLabel docs, вы можете использовать метод getText() для извлечения текста метки.

String labelText = ((JLabel) jLayeredPane2.getComponent(j)).getText(); 

Чтобы проверить, если компонент является JLabel можно использовать при сравнении

if (jLayeredPane2.getComponent(j) instanceof JLabel) { } 

как уже было предложено в this question.

Ваш окончательный код будет выглядеть примерно так:

if (jLayeredPane2.getComponent(j) instanceof JLabel) { 
    Label label = (JLabel) jLayeredPane2.getComponent(j); 
    String labelText = label.getText(); 
} 
+0

Nope - 'jLayeredPane2.getComponent (j) .getText()' будет терпеть неудачу, поскольку не каждый компонент предоставляет метод getText(). – berry120

+0

Я забыл добавить кастинг. –

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