gpt4 book ai didi

java - 在 GridPane 上绘制的线不会显示

转载 作者:行者123 更新时间:2023-11-30 06:16:53 26 4
gpt4 key购买 nike

我需要在 GridPane 中使用行分隔符。并不是所有的线都可见,而是中间的一根线。我目前的做法是放入一个 Pane ,其中的 Line 覆盖 GridPane:

StackPane secondSlide = new StackPane();
GridPane secondSlideCore = new GridPane();
// secondSlideCore is being filled with TextFields
secondSlide.getChildren().add(secondSlideCore);
Pane secondSlideOverlay = new Pane();

secondSlideOverlay.setPrefSize(secondSlideCore.getPrefWidth(), secondSlideCore.getPrefHeight());
Line mainOverlay = new Line(secondSlideOverlay.getPrefWidth() / 2, 0, secondSlideOverlay.getPrefWidth() / 2, secondSlideOverlay.getPrefHeight());

后来我将所有内容拼凑在一起:

secondSlideOverlay.getChildren().add(mainOverlay);
secondSlide.getChildren().add(secondSlideOverlay);

尽管 secondSlide 已正确添加到窗口(secondSlideCore 确实显示),但由于某种原因该行不会出现。

我尝试了以下所有方法来使其显示:

mainOverlay.setFill(Color.BLACK);
mainOverlay.setStroke(Color.BLACK);
mainOverlay.setStrokeWidth(2);
mainOverlay.setVisible(true);
mainOverlay.setOpacity(1);
secondSlideOverlay.setVisible(true);

我的 GridPane 上仍然没有线条。我错过了什么吗?

最佳答案

prefWidthprefHeight 默认为常量 Region.USE_COMPUTED_SIZE,其值为 -1.0。因此,您会得到更多的点而不是线((-0.5, 0)(-0.5, -1))。

此外,调整 Pane 大小不会使该行保持最新。

使用绑定(bind)来解决此问题:

Pane secondSlideOverlay = new Pane();

secondSlideOverlay.prefWidthProperty().bind(secondSlideCore.widthProperty());
secondSlideOverlay.prefHeightProperty().bind(secondSlideCore.heightProperty());

DoubleExpression w2 = secondSlideCore.widthProperty().multiply(.5);

Line mainOverlay = new Line();
mainOverlay.startXProperty().bind(w2);
mainOverlay.endXProperty().bind(w2);
mainOverlay.endYProperty().bind(secondSlideCore.heightProperty());

关于java - 在 GridPane 上绘制的线不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48986472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com