2016-02-09 5 views
0

Я работаю с различными панелями, которые являются частью CardLayOut, и каждая панель имеет некоторые текстовые поля, раскрывающийся список и элементы флажка внутри, что я хочу сделать, это получить информацию от каждого элемента, используя кнопка за пределами макета. Я узнал, как получить свойства каждого элемента, вот мое определение CardLayout:Получение информации из элементов внутри CardLayout

layCard= new CardLayout(); 
    MainPanel.setLayout(layCard); 
    MainPanel.add("Panel1",InfoPanel); 
    MainPanel.add("Panel2",selection); 
    MainPanel.add("Panel3",questions); 
    MainPanel.add("Panel4",summary); 

А вот мой метод при попытке получить информацию элемента внутри панели внутри MainPanel Внутри CardLayout :

private void printValues(java.awt.event.ActionEvent evt) {          


    System.out.println(""+MainPanel.getComponent(0).getAccessibleContext().getAccessibleChild(2).getAccessibleContext().getAccessibleText()); 

} 

в этом случае я доступ к элементу 0 из MainPanel, который InfoPanel и попытаться получить значение от ребенка 2, который является JTextField, но я могу»понять, как получить значение внутри поле, я даже не знаю, есть ли способ, который может помочь в этом. Есть ли у вас какие-либо предложения о том, как это сделать?

+0

Если 'MainPanel.getComponent (0) .getAccessibleContext(). GetAccessibleChild (2) .getAccessibleContext(). GetAccessibleText()' дает вам 'JTextField', почему бы вам просто не перевести его на' JTextField', а затем нам метод 'JTextField # getText()'? – STaefi

+0

Должно быть что-то вроде метода getValue(). Этот метод должен возвращать объект «Объект», захватить этот объект и передать его в String –

+0

Да, дело в том, что у меня есть JTextFields и другие компоненты, которые не возвращают значения Strings в качестве значений, я попробовал лить весь компонент как @STaefi сказал, и похоже, что он работает так, как я ожидал. Благодаря стенду из вас. –

ответ

0

Добавьте Components к Array или List и просто вызывать их из индекса относительной (array[index] или list.get(index)).

Если у вас нет прямого доступа к номеру, требуемому для индекса, вы можете просто выполнить цикл Array или List с использованием цикла for.

Таким образом, вы знаете, какие типы объектов являются Components, и вы можете либо бросить безопасно, либо получить доступ к правильным методам (getText() и т. Д.).

+0

Спасибо, это может быть решение, я попробовал и работает, дело в том, что у меня уже много кода, и будет сложнее реализовать это решение для каждой панели. –

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