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 
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.