gpt4 book ai didi

java - 如何在 fxml 文件中获取 imageView

转载 作者:行者123 更新时间:2023-11-29 05:24:04 25 4
gpt4 key购买 nike

我有这个fxml文件

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<StackPane opacity="1.0" prefHeight="700.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="engine.scene.ctrler">
<children>
<ImageView fitHeight="701.7022094726562" fitWidth="1235.874704009025" pickOnBounds="true" preserveRatio="true" visible="true" StackPane.alignment="CENTER">
<effect>
<Glow level="0.9371069182389937" />
</effect>
<image>
<Image url="@../../../resources/img/bg.jpg" />
</image></ImageView></children></stackpane>

我想在我的场景大小改变时改变我的 imageView 的宽度和高度。我知道我应该使用这个

  stage.widthProperty().addListener(new ChangeListener() { 
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
myImageView.setFitWidth(stage.getWidth());
}
});

但我不知道如何从 fxml 文件中获取 ImageView

最佳答案

我想你需要的是一个 Controller 。

首先,您必须在 FXML 的 StackPane 行上添加以下属性

fx:controller="the.package.ControllerName"

ImageView 上的一个属性,其 Id 为:

fx:id="图片ID"

当然,.package 是您要使用的 Controller 的包。

要实现 Controller ,请使用您想要的名称创建一个新类,并扩展 StackPane 并覆盖初始化方法:

package the.package;  

public class ControllerName extends StackPane{

@FXML
ImageView imageId;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
//You can add code here.

//With JavaFX2
widthProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
myImageView.setFitWidth(stage.getWidth());
}
});

//With JavaFX8 Using Lambdas
widthProperty().addListener((ov, t, t1) ->
myImageView.setFitWidth(getWidth()));

}
}

如果这不起作用,您将需要在调整 ImageView 大小的 Controller 中创建一个新的公共(public)方法。您可以从已实现的阶段监听器调用此方法。

如果这不是您要找的,请告诉我。

P.S - 我有一个使用这个概念的小项目 here !

关于java - 如何在 fxml 文件中获取 imageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23398824/

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