Layout 确定画布可以扩展到的最大尺寸?
我使用的是边框窗格,右边的区域未使用。在中心区域,我有一个带有画布和另一个控件(如按钮)的HBox。我希望画布具有相同的宽度和高度,值为Layout 确定画布可以扩展到的最大尺寸?,layout,canvas,javafx-2,Layout,Canvas,Javafx 2,我使用的是边框窗格,右边的区域未使用。在中心区域,我有一个带有画布和另一个控件(如按钮)的HBox。我希望画布具有相同的宽度和高度,值为 Canvas width and height = minimum{maximum possible Canvas height, maximum possible Canvas width} (换句话说:画布应该是正方形) 我的问题是:如何确定画布可以增长到的最大宽度和最大高度 这是我的FXML: <?xml version="1.0" encodi
Canvas width and height = minimum{maximum possible Canvas height, maximum possible Canvas width}
(换句话说:画布应该是正方形)
我的问题是:如何确定画布可以增长到的最大宽度和最大高度
这是我的FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<bottom>
<Label text="Bottom area" />
</bottom>
<center>
<HBox>
<children>
<Canvas width="300" height="300" />
<Button mnemonicParsing="false" text="some button next to the Canvas" />
</children>
</HBox>
</center>
<left>
<Button mnemonicParsing="false" text="Left area"/>
</left>
<top>
<MenuBar>
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
</BorderPane>
谢谢你的提示 我能看到的最简单的方法是:canvas.getwidth()和canvas.getHeight()构建GUI后,您必须手动添加画布,以便计算其大小:
public class YourController implements Initializable {
@FXML HBox mHBox;
@FXML Button mButton;
@Override
public void initialize(final URL paramURL, final ResourceBundle paramResourceBundle) {
Platform.runLater(new Runnable() { public void run() {
double w0 = mHBox.getWidth();
double w1 = mButton.getWidth();
double h0 = mHBox.getHeight();
double size = Math.min(w0-w1, h0);
Canvas canvas = new Canvas(size, size);
mHBox.getChildren().add(0, canvas);
}});
}
}
画布的问题是无法调整大小:(如果我错了,请纠正我,但据我所知,我必须手动设置画布大小,否则为0。getWidth()只返回我以前设置的大小,而不是最大可能的大小):我对javafx有少量的经验,但似乎因为你给了边界窗格无限的维度,所以你的中心区域(和画布)可以无限扩展。你说的是可见尺寸吗?那么这可能会有帮助: