2023-02-16 382
我有一个包裹在ScrollPane中的Javafx TextFlow,每当将新的Text添加到> Text中,我试图将其自动滚动到底部.
.
我尝试将听众最大化ScrollPane’s vvalue到:
要多大的感谢,我想滚动,以便如果新添加太大而无法一次显示,则ScrollPane滚动,以使新添加在顶部,用户应滚动手动查看”溢出”.正如我所说,这将是一个额外的好处,只要滚动到底部就可以了,因为我不希望这么大的添加(定期).
,不,我不会切换到TextArea,这将相对简单.我希望能够轻松地将常规,粗体和斜体文本添加到TextFlow中,并且TextArea不支持此.我还尝试了托马斯·米库拉(Thomas Mikula)的 richtextfx ,但是
因此,任何将与TextFlow一起使用的解决方案都将不胜感激.
编辑:解决方案,按要求:
private ScrollPane textContainer;
private TextFlow text;
public BaseGui() {
//....
text.getChildren().addListener(
(ListChangeListener<Node>) ((change) -> {
text.layout();
textContainer.layout();
textContainer.setVvalue(1.0f);
}));
textContainer.setContent(text);
//....
}
public void appendBold(String msg) { //similar for italic and regular
append(msg, "-fx-font-weight: bold");
}
private synchronized void append(String msg, String style) {
Platform.runLater(() -> {
Text t = new Text(msg);
t.setFont(segoe(13));
if (!style.equals("")) {
t.setStyle(style);
}
text.getChildren().add(t);
});
}
它不会赢得代码样式的任何奖项,但是由于这是一个个人项目,所以我真的不在乎.
修改您的第三种方法使用layout()而不是requestLayout().
requestLayout()将布局标记为 dirty ,并在上引起下一个脉冲.在代码
中
requestLayout();
doSomethingThatDependsOnLayout();
doSomethingThatDependsOnLayout()将看到旧布局.
layout()立即执行布局(同步),但前提是布局为 dirty . (在您的情况下,更改文本流的文本将其布局标记为肮脏.)在代码
中
layout();
doSomethingThatDependsOnLayout();
doSomethingThatDependsOnLayout()将看到 new 布局.
以上所述是小编给大家介绍的自动滚动Javafx TextFlow,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34081.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态