makecio
Novembro 29, 2010, 2:50pm
#1
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);
makecio
Novembro 30, 2010, 12:53pm
#2
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
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)
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…
[code]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;
}
}[/code]