Retirar texdo de JTextArea colocada em um JScrollPane

Boa tarde.

Estou fazendo um editor de texto simples e sem formatação , e por opção escolhi utilizar JTextArea no lugar de JTextPane.
O problema é o seguinte : Eu adiciono uma JTextArea a um JScrollPane (para ter as barras de rolagem e talz), e adiciono o JScrollPane a um JTabbedPane. ( para criar um sistema de abas no meu editor).

JTabbedPane aba = new JTabbedPane();
JTextArea   area = new JTextArea();
JScrollPane scroll = new JScrollPane(area);

scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
			
abas.add(numAba, scroll);
addCloseButton(barra);

numAba++;

O problema e que na hora de salvar eu necessito retirar o texto da aba selecionada no momento e adicioná-lo a uma string quando o usuário escolher a opção de salvar :


JScrollPane selecionado = (JScrollPane) aba.getSelectedComponent(); // aqui funciona perfeitamente

O problema ocorre quando tento tirar o texto de tendo do JScrollPane. Não estou conseguindo fazê-lo. Alguem tem alguma sugestão ?
[],

Você poderia guardar as referências ao JScrollPane e JTextArea que criou inicialmente, e usá-los quando houvesse necessidade. Nesse caso, em vez de declarar dentro de um método as variáveis [area] e [scroll], elas seriam atributos da classe. Outra saída é tentar ler os componentes armazenados pelo JScrollPane:

JScrollPane selecionado = (JScrollPane) aba.getSelectedComponent(); JTextArea area = (JTextArea) selecionado.getComponent(0);
Não cheguei a testar o código acima, então pode ser que não funcione direito, mas não custa tentar.

[quote=roger_rf]Você poderia guardar as referências ao JScrollPane e JTextArea que criou inicialmente, e usá-los quando houvesse necessidade. Nesse caso, em vez de declarar dentro de um método as variáveis [area] e [scroll], elas seriam atributos da classe. Outra saída é tentar ler os componentes armazenados pelo JScrollPane:

JScrollPane selecionado = (JScrollPane) aba.getSelectedComponent(); JTextArea area = (JTextArea) selecionado.getComponent(0);
Não cheguei a testar o código acima, então pode ser que não funcione direito, mas não custa tentar.[/quote]

ja havia tentado fazer desta forma e acabo recebendo um ClassCastException :frowning:

Estudei um pouco mais o problema, veja o trecho abaixo:

JViewport viewport = scroll.getViewport();
Component comp = (viewport != null) ? viewport.getView() : null;
System.out.println(">>> comp: " + comp);

A variável comp deverá conter a sua JTextArea.