setCaretPosition(-1)?

3 respostas
makecio

Ola pessoal , estou montando meu chat, e me deparei com algo estranhu.

Logo quando o usuario da ENTER e mandar a msg, a JTextArea é limpar mas o cursor vai pra linha de baixo. pois entao pesquisei e achei o comando .setCaretPosition(int);

Pela logica para usar seria JTextArea.setCaretPosition(0); Porem nao funciona…

usando JTextArea.setCaretPosition(-1); funciona perfeitamente, mas quando vejo no netbeans uma Exception aparece falando sobre a posicao -1 do caret que esta errada.

Pergunto a voces. Deixo assim mesmo -1? mesmo dando exception … ou o que poderia estar dando errado quando coloco JTextArea.setCaretPosition(0);

3 Respostas

makecio

Estou limpando a JTextArea com o comando

JTextArea.setText("");

tentei colocar caretposition com valor 0 , mas ele nao volta pra linha inicial, ele so volta quando coloco -1 , mas ai aparece no netbeans a exception

WellingtonRamos

Como você está configurando e como está limpando a JTextArea?

O correto seria setCaretPosition(0) se você deseja que o cursor vá para o início da linha.

setCaretPosition(int)

WellingtonRamos

Fiz esse código como teste e estou limpando da mesma forma que você.
Não precisei utilizar o caretPosition.

Se possível, reveja a criação do JTextArea e se você está atribuindo algum comportamento diferente a ele...

package testes.swing.textarea;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class Main {

	public static void main(String[] args) {
	    SwingUtilities.invokeLater(new Runnable(){
	    	@Override
	    	public void run() {
	    		MyFrame frame = new MyFrame();
	    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    		frame.pack();
	    		frame.setVisible(true);
	    	}
	    });
    }
}

class MyFrame extends JFrame {
    private static final long serialVersionUID = 1L;
	private JTextArea textArea;
	private JButton button;
	public MyFrame() {
		initialize();
    }
	private void initialize() {
		setLayout(new GridLayout(0,1));
		setPreferredSize(new Dimension(200,200));
		add(getTextArea());
		add(getButton());
    }
	private Component getButton() {
		if(button == null) {
			button = new JButton("Clique aqui");
			button.addActionListener(new ActionListener() {
				@Override
                public void actionPerformed(ActionEvent e) {
					textArea.setText("");
					textArea.requestFocusInWindow();
                }
			});
		}
	    return button;
    }
	private Component getTextArea() {
		if(textArea == null) {
			textArea = new JTextArea(5, 20);
			textArea.setWrapStyleWord(false);
		}
	    return textArea;
    }
}
Criado 29 de novembro de 2010
Ultima resposta 30 de nov. de 2010
Respostas 3
Participantes 2