JavaFX ScrollPane - 向下滚动更新

时间:2017-12-15 19:04:57

标签: java javafx

我制作了ScrollPane,其中包含TextArea。当TextArea使用push()方法获取其他文本时,需要将滚动条设置为底部。但是,使用push()时,栏会设置为顶部。我不确定将它设置到底部需要什么方法。

以下是ScrollPane代码:

package Games.UI.RPG;

import Games.Other.Constants;
import javafx.event.EventHandler;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.input.ScrollEvent;

/**
 * Scrollable window which contains Text messages.
 */
class LogPane extends ScrollPane{

  private TextArea log;

  LogPane(){
    initialize();
  }

  private void initialize(){
    log = new TextArea();
    log.setEditable(false);
    log.prefWidth(512);
    log.setText("Text Log loaded. Messages:");

    setContent(log);
    setFitToWidth(true);
    setFitToHeight(true);

    setMinHeight(Constants.height);
    setMaxHeight(Constants.height);
    setMinWidth(Constants.width / 3);
    setMaxWidth(Constants.width / 3);
  }

  public void push(String message){
    log.setText(log.getText() + "\n" + message);
    setVvalue(getVmax());
  }
}

1 个答案:

答案 0 :(得分:1)

正如user1803551指出的那样,您使用的是ScrollPaneTextArea。当文本变长时,TextArea会有一个滚动条。因此,您需要将TextArea滚动条移至底部,因为永远不会显示ScrollPane's滚动条。

public void push(String message)
{
    log.setText(log.getText() + "\n" + message);
    log.selectPositionCaret(log.getLength());
    log.deselect();
}

TextArea滚动条移至底部here的其他方法。我个人更喜欢log.appendText();