Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让Canvas元素填充BorderPane的整个中心部分?_Java_User Interface_Javafx_Layout_Fxml - Fatal编程技术网

Java 如何让Canvas元素填充BorderPane的整个中心部分?

Java 如何让Canvas元素填充BorderPane的整个中心部分?,java,user-interface,javafx,layout,fxml,Java,User Interface,Javafx,Layout,Fxml,我正在尝试创建一个简单的应用程序,它将在边框窗格的顶部有一个菜单栏(这是可行的)和一个占据其余空间的画布。我正在使用BorderPane,因为它似乎最符合我要做的事情。目前,Canvas元素总是0像素宽,这显然不是我想要的 我曾尝试将画布的大小绑定到BorderPane,将画布放在VBox/HBox组中,将其放在一个固定面板中,设置边距 因此,FXML文件应该可以工作,但只有菜单显示正确。它应该已经填充了中心区域。你怎么知道它的宽度是零像素?@VGR我用System.out.println(

我正在尝试创建一个简单的应用程序,它将在边框窗格的顶部有一个菜单栏(这是可行的)和一个占据其余空间的画布。我正在使用BorderPane,因为它似乎最符合我要做的事情。目前,Canvas元素总是0像素宽,这显然不是我想要的

我曾尝试将画布的大小绑定到BorderPane,将画布放在VBox/HBox组中,将其放在一个固定面板中,设置边距



因此,FXML文件应该可以工作,但只有菜单显示正确。

它应该已经填充了中心区域。你怎么知道它的宽度是零像素?@VGR我用System.out.println(canvas.getWidth())来判断它的宽度。你把System.out.println语句放在哪里了?在检查画布的大小之前,您需要等待场景布局其内容。当我在FXML中手动添加宽度和高度(将其更改为)时,我可以很好地看到它。
Canvas
是(在布局上下文中),您必须显式地为它指定适当的尺寸。请注意,缩小
画布
将删除当前较小边界之外的所有图形,如果再次增大
画布
,这些图形将不会重新出现。换句话说,动态大小的
画布
可能会重复丢失信息。