1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JavaFX: TextArea: rolagem automática

Olá,

Tenho um sistema que executa várias consultas num banco de dados e o processo tem que ser acompanhado pelo usuário passo-a-passo. O usuário não tem ação para realizar durante o processo, mas ele tem que acompanhar o que está acontecendo.

Criei uma tela simples, para fazer um teste, com um TextArea e um Task atualizando o TextArea automaticamente. Está funcionando, mas não consigo fazer o TextArea rolar automaticamente mostrando a última linha sempre.

Alguém tem alguma sugestão para fazer a barra de rolagem ficar sempre no final do texto?

Segue o meu código:

public class TextAreaTeste extends Application {

    @Override
    public void start(Stage primaryStage) {

        TextArea txtareaMensagem = new TextArea();
        StackPane root = new StackPane();
        root.getChildren().add(txtareaMensagem);

        Tarefa tarefa = new Tarefa();
        txtareaMensagem.textProperty().bind(tarefa.textoProperty());

        Thread thread = new Thread(tarefa);
        thread.setDaemon(true);
        thread.start();

        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("Teste");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

class Tarefa extends Task<Void> {
    private StringProperty texto = new SimpleStringProperty(this, "texto", "");
    public StringProperty textoProperty() { return texto; }

    @Override
    protected Void call() throws Exception {
        for (int i = 0; i < 100; i++) {
            String txt = texto.getValue() + "Mensagem " + i + "\n";
            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    texto.setValue(txt);
                }
            });
            Thread.sleep(100);
        }
        return null;
    }
}

Obrigado,

Rene

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags javafx ou faça a sua própria pergunta.