gpt4 book ai didi

JavaFX - 如何在 Pane 中打开和显示图像?

转载 作者:行者123 更新时间:2023-11-30 08:12:14 25 4
gpt4 key购买 nike

我正在尝试创建一个允许用户打开图像文件并将其显示在 Pane 中的应用程序。我选择了 JavaFX 来创建 GUI,但这给下面的代码带来了一些困难:

public class Controller implements Initializable 
{

...

public void openFile()
{
fileChooser = new FileChooser();
file = fileChooser.showOpenDialog(stage);

if (file != null)
{
// display the image in the pane
}
}

...

}

基本上,我需要我的 Controller 类来更新我 View 中的 pane,它在 .fxml 文件中定义如下:

<Pane maxHeight="1.8" style="-fx-border-color: #000000;" GridPane.rowIndex="1"/>

事实上,我找不到这样做的方法,因为我无法引用 Pane

最佳答案

您需要将 FXML 文件中的元素注入(inject)到 Controller 中,以便您可以在那里访问它。查看tutorial (“向表中添加行”部分, list 3-14 和 3-16),或 documentation .

基本上,您需要向 FXML 文件中的定义添加一个 fx:id="..." 属性,其值与 Controller 类中的变量名称相匹配:

<Pane fx:id="pane" maxHeight="1.8" style="-fx-border-color: #000000;" GridPane.rowIndex="1"/>

然后用@FXML注释 Controller 中的字段定义。确保变量名称与 fx:id 值匹配:

public class Controller implements Initializable 
{

@FXML
private Pane pane ;

// ...

public void openFile()
{
fileChooser = new FileChooser();
file = fileChooser.showOpenDialog(pane.getScene().getWindow());

if (file != null)
{
// display the image in the pane
pane.getChildren().add(new ImageView(file.toURI().toURL().toExternalForm()));
}
}
}

在 SceneBuilder 中,您可以通过选择 Pane 来设置 fx:id,然后在“代码”部分下输入它的值,这是在底部的部分右 Pane :

enter image description here

关于JavaFX - 如何在 Pane 中打开和显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com