如何使用JavaFX在BorderPane内动态调整Canvas的大小

时间:2015-05-14 08:18:24

标签: java swing canvas javafx

我已经使用Swing了很长时间并开始进入JavaFX。我无法弄清楚如何创建一个可调整大小的绘画区域。

我想要的是等同于Swing代码:

JPanel parent = new JPanel(new BorderLayout());
JPanel drawArea = new JPanel(){
    protected void paintComponent(Graphics g)
    {
        g.setColor(Color.white);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.red);
        g.drawLine(0, 0, getWidth(), getHeight());
        g.drawLine(getWidth(), 0, 0, getHeight());
    }
};
parent.add(drawArea, BorderLayout.CENTER);

每当您更改其大小时,这将很好地扩展以适合父容器。

我试图在JavaFX中使用BorderPane作为内部控件,使用Canvas作为内部控件,基于此处的代码:

http://www.javacodegeeks.com/2014/04/javafx-tip-1-resizable-canvas.html

这可以通过在任务更改时将画布设置为父组件的维度来实现 - 但是,这可以防止画布在父级应该缩小时缩小,因为父级大小现在包括其子画布大小。所以这个例子的唯一方法就是如果我的画布直接将舞台用作父级。设置它似乎也需要做很多工作。

有没有办法得到一个简单的JPanel - 类似的组件,它会自动适合它的父级,让我抓住一个resize事件,以便重新绘制它?

0 个答案:

没有答案