JavaFX-滚动窗格上的内容扭曲问题
我在呈现JavaFX滚动窗格时遇到了一个问题。有时,当我滚动窗格时,包含的视图看起来“撕裂”或只是缺少某些细节。如果用户更改应用程序中的当前焦点(即单击新元素),则可以修复撕裂。请看下面的图片 我制作了一个可以复制该问题的示例程序:JavaFX-滚动窗格上的内容扭曲问题,java,javafx,javafx-8,Java,Javafx,Javafx 8,我在呈现JavaFX滚动窗格时遇到了一个问题。有时,当我滚动窗格时,包含的视图看起来“撕裂”或只是缺少某些细节。如果用户更改应用程序中的当前焦点(即单击新元素),则可以修复撕裂。请看下面的图片 我制作了一个可以复制该问题的示例程序: public class ScrollingView extends Application { public static void main(String[] args) { launch(args); } @Ove
public class ScrollingView extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Scrollview!");
ScrollPane root = new ScrollPane();
root.paddingProperty().setValue( new Insets(10, 10, 10, 10));
GridPane grid = new GridPane();
for(int i = 0; i < 20; i++)
grid.addRow( i, createSpinner() );
root.setContent(grid);
root.vvalueProperty().addListener( (ov, oldV, newV) -> root. );
primaryStage.setScene(new Scene(root, 300, 150));
primaryStage.show();
}
private Node[] createSpinner(){
Node[] nodes = new Node[2];
nodes[0] = new Label("Spinner");
Spinner<Integer> spinner = new Spinner<>();
spinner.setEditable(false);
IntegerSpinnerValueFactory spinnerFactory = new IntegerSpinnerValueFactory(1, 10, 5, 1);
spinner.setValueFactory(spinnerFactory);
nodes[1] = spinner;
return nodes;
}
}
公共类ScrollingView扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公共无效开始(阶段primaryStage){
setTitle(“Scrollview!”);
ScrollPane root=新的ScrollPane();
root.paddingProperty().setValue(新的插入(10,10,10,10));
GridPane grid=新建GridPane();
对于(int i=0;i<20;i++)
addRow(i,createSpinner());
setContent(网格);
root.vvalueProperty().addListener((ov,oldV,newV)->root.);
原始阶段。设置场景(新场景(根,300150));
primaryStage.show();
}
私有节点[]createSpinner(){
节点[]节点=新节点[2];
节点[0]=新标签(“微调器”);
微调器微调器=新微调器();
微调器.setEditable(false);
IntegerSpinnerValueFactory喷丝头工厂=新的IntegerSpinnerValueFactory(1,10,5,1);
spinner.setValueFactory(spinnerFactory);
节点[1]=微调器;
返回节点;
}
}
我在谷歌上搜索了这个问题,但找不到解决办法。有人知道问题的原因吗?有没有办法解决
谢谢//Simon当填充应用于
滚动窗格时,微调器
渲染会发生扭曲。评出
root.paddingProperty().setValue( new Insets(10, 10, 10, 10));
解决问题。这可能是一个bug,您更愿意将其归档。将填充添加到其他外部布局(而不是滚动窗格)可以作为一种解决方法:
VBox vbox =new VBox(root);
vbox.setPadding( new Insets(10, 10, 10, 10));
primaryStage.setScene(new Scene(vbox, 300, 150));
哇,就这么简单。我已经尝试了几天不同的事情,但我从来没有想过这是一个解决方案。谢谢你找到它!