gpt4 book ai didi

JavaFX Canvas 和 BorderPane

转载 作者:行者123 更新时间:2023-12-01 12:47:59 24 4
gpt4 key购买 nike

我目前正在 JavaFX 中开发一个项目,并且正在使用 BorderPane 制作 GUI。我已经成功创建了菜单和 Accordion ,并将它们添加到我想要的位置(顶部和右侧)。

现在我创建了一个扩展 Canvas 的类,并希望将其添加到左侧,但它似乎不起作用。

我需要的是应用程序有一个菜单、右侧的可扩展选项( Accordion )以及在剩余空间(左侧)上绘制图像的空间。

有人可以透露一些信息吗?

添加一些代码!

public class PainelCanvas extends Canvas implements DesenhoCanvas {

//ATRIBUTOS
Canvas canvas;

//CONSTRUTOR
public PainelCanvas() {
canvas = new Canvas(400, 400);
GraphicsContext gc = canvas.getGraphicsContext2D();
desenhar(gc);
}

@Override
public void desenhar(GraphicsContext gc) {
gc.setFill(Color.GREEN);
gc.fillText("adsads", 20, 30);
}

}

在我的主类中,我正在创建一个 PainelCanvas 对象并将其添加到我的 BorderPane 中。

BorderPane root = new BorderPane();
PainelMenu menu = new PainelMenu();
PainelCanvas canvas = new PainelCanvas();
PainelAccordion painel = new PainelAccordion();

//Definir localização dos vários elementos gráficos
root.setTop(menu);
root.setLeft(canvas);
root.setRight(painel);

最佳答案

您的 Canvas 没有设置宽度或高度,也没有内容。

请注意,您这样做

public class PainelCanvas extends Canvas ...

PainelCanvas canvas = new PainelCanvas();
// ...
root.setLeft(canvas);

所以PainelCanvas CanvasCanvas您添加到您的 BorderPane .

PainelCanvas内你创建另一个 Canvas :

canvas = new Canvas(400, 400);

并向其中添加一些内容:

GraphicsContext gc = canvas.getGraphicsContext2D();
// ...
gc.fillText(...);

但是该 Canvas 从未添加到 BorderPane .

如果你真的想延长Canvas (不是真的推荐)你应该这样做

public class PainelCanvas extends Canvas implements DesenhoCanvas {
public PainelCanvas() {
super(400, 400);
GraphicsContext gc = this.getGraphicsContext2D();
desenhar(gc);
}
// desenhar(...) method as before
}

但我不想子类 Node类,除非确实必要(“支持聚合而不是继承”)。

推荐解决方案:

public class PainelCanvas implements DesenhoCanvas {
private Canvas canvas ;
public PainelCanvas() {
canvas = new Canvas(400, 400);
GraphicsContext gc = canvas.getGraphicsContext2D();
desenhar(gc);
}

// desenhar(...) as before...

public Node getView() {
return canvas ;
}
}

然后:

root.setLeft(canvas.getView());

关于JavaFX Canvas 和 BorderPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501544/

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