JavaFX:在相同维度的

时间:2016-02-10 22:40:55

标签: user-interface canvas javafx scrollpane

我创建了一个10 000 x 10000像素的画布,将其放置在尺寸为300 x 300的滚动窗格内。这实现得很好。绘制了整个网格,我可以滚动它。

我的任务是创建相同的功能,而不是使用300 x 300画布。由于速度在这个程序中很重要,我被告知这会更快。

我的问题是,当我这样做时,我无法访问滚动窗格底部和右侧的滚动条。如何重新访问这些滚动条,进行物理滚动?

画布每秒更新60步。正在绘制的是来自2D阵列中的信息的正方形网格。

1 个答案:

答案 0 :(得分:0)

由于视口处理将由绘图逻辑完成,因此使用GridPane自行创建“ScrollPane”非常容易:

public static ScrollBar createScrollBar(Orientation orientation, double fullSize, double canvasSize) {
    ScrollBar sb = new ScrollBar();
    sb.setOrientation(orientation);
    sb.setMax(fullSize - canvasSize);
    sb.setVisibleAmount(canvasSize);
    return sb;
}
Canvas canvas = new Canvas();
canvas.setHeight(300);
canvas.setWidth(300);

ScrollBar vScroll = createScrollBar(Orientation.VERTICAL, 10000, 300);

ScrollBar hScroll = createScrollBar(Orientation.HORIZONTAL, 10000, 300);

GridPane scrollPane = new GridPane();
scrollPane.addColumn(0, canvas, hScroll);
scrollPane.add(vScroll, 1, 0);