我目前正在用JavaFX做一个项目,我正在用BorderPane做图形用户界面。我已经成功地创建了菜单和手风琴,并将它们添加到我想要的位置(顶部和右边)。
现在,我已经创建了一个扩展画布的类,希望将它添加到左侧,但它似乎不起作用。
我需要的是应用程序有一个菜单,可扩展的选项在右边(手风琴)和空间,以绘制图像的剩余空间(左)。
有人能给点线索吗?
添加一些代码!
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);发布于 2014-07-01 11:08:43
您的画布没有宽度或高度设置,也没有内容。
注意,你知道
public class PainelCanvas extends Canvas ...和
PainelCanvas canvas = new PainelCanvas();
// ...
root.setLeft(canvas);因此,PainelCanvas 是一个 Canvas,是添加到BorderPane中的Canvas。
在PainelCanvas内部创建另一个Canvas
canvas = new Canvas(400, 400);并在其中添加一些内容:
GraphicsContext gc = canvas.getGraphicsContext2D();
// ...
gc.fillText(...);但是这个画布从来没有添加到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());https://stackoverflow.com/questions/24501544
复制相似问题