3d 基于子对象的增长边框';JavaFX中的文本节点内容
我很难弄清楚最好的程序是什么,有一个不断增长和收缩的3d 基于子对象的增长边框';JavaFX中的文本节点内容,3d,javafx,resize,2d,textnode,3d,Javafx,Resize,2d,Textnode,我很难弄清楚最好的程序是什么,有一个不断增长和收缩的边框窗格。我想根据窗格的文本节点子节点(文本长度不断变化)水平放大或缩小窗格。我必须考虑一些额外的限制/问题: 无法使用标签,因为它们在3D场景中渲染效果更差。即使lcd/灰色/高速缓存打开或关闭 如果文本长度大于其边界框宽度,则文本节点将进行换行 使用setWrappingWidth(0)自动右对齐文本节点,而不是我需要的水平居中对齐 使用setwrappingwidt(Double.MAX_值)在3D场景中使用相机经过时引发异常 还没有弄
边框窗格
。我想根据窗格的文本
节点子节点(文本长度不断变化)水平放大或缩小窗格。我必须考虑一些额外的限制/问题:
- 无法使用
,因为它们在3D场景中渲染效果更差。即使lcd/灰色/高速缓存打开或关闭标签
- 如果文本长度大于其边界框宽度,则文本节点将进行换行
- 使用
自动右对齐文本节点,而不是我需要的水平居中对齐setWrappingWidth(0)
- 使用
在3D场景中使用相机经过时引发异常setwrappingwidt(Double.MAX_值)
- 还没有弄清楚如何实际设置节点的宽度。我可以通过
获得它getLayoutBounds().getWidth()
- 文本节点类似乎没有任何可用的宽度绑定
边框窗格
更改为包含VBox
,而VBox又包含一个文本字段
。但是,它也应该通过为文本
节点设置setWrappingWidth
来工作。
TextUtils
class I是从上面的链接复制的
public TextField getTop() {
Node topNode = this.borderPane.getTop();
if((topNode instanceof VBox)) {
VBox topVBox = (VBox) topNode;
if(!topVBox.getChildren().isEmpty() && topVBox.getChildren().get(0) instanceof TextField) {
return (TextField) topVBox.getChildren().get(0);
}
}
return null;
}
public void adaptWidthByText(Font font, String text) {
// + 50px for some additional space to compensate insets, borders etc.
double newWidth = TextUtils.computeTextWidth(font, text, 0.0D) + 50;
this.borderPane.setPrefWidth(newWidth);
}
public void setTopText(String text) {
TextField topTextField = getTop();
if(topTextField == null) return;
adaptWidthByText(topTextField.getFont(), text);
topTextField.setText(text);
}