Java 如何让Canvas元素填充BorderPane的整个中心部分?
我正在尝试创建一个简单的应用程序,它将在边框窗格的顶部有一个菜单栏(这是可行的)和一个占据其余空间的画布。我正在使用BorderPane,因为它似乎最符合我要做的事情。目前,Canvas元素总是0像素宽,这显然不是我想要的 我曾尝试将画布的大小绑定到BorderPane,将画布放在VBox/HBox组中,将其放在一个固定面板中,设置边距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(
因此,FXML文件应该可以工作,但只有菜单显示正确。它应该已经填充了中心区域。你怎么知道它的宽度是零像素?@VGR我用System.out.println(canvas.getWidth())来判断它的宽度。你把System.out.println语句放在哪里了?在检查画布的大小之前,您需要等待场景布局其内容。当我在FXML中手动添加宽度和高度(将其更改为)时,我可以很好地看到它。
Canvas
是(在布局上下文中),您必须显式地为它指定适当的尺寸。请注意,缩小画布
将删除当前较小边界之外的所有图形,如果再次增大画布
,这些图形将不会重新出现。换句话说,动态大小的画布
可能会重复丢失信息。