gpt4 book ai didi

java - 使用 JavaFX Scene Builder 在代码中更改 ImageView 图像

转载 作者:行者123 更新时间:2023-11-29 04:38:31 40 4
gpt4 key购买 nike

我试图在单击按钮时更改 ImageView 组件中的图像。我需要它是本地镜像。我一直收到路径错误,无法使用 ImageIcon 并将其转换为图像。有没有一种简单的方法可以做到这一点?

package tictactoesimulator_alliebeckman;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

/**
*
* @author Allie
*/
public class FXMLDocumentController implements Initializable {

// my components
@FXML
public Label lblWinLose;
@FXML
public Button btnNewGame;
@FXML
public ImageView ivOne;

// Event handle for button click
@FXML
public void handleButtonAction(ActionEvent event) {

// here is where I'm having the issue I have the image file in my src folder
// I've tried using a ImageIcon and it wont convert to an Image?
// All I need is the image to change to the local image on button click

lblWinLose.setText("Clicked");
Image image = new Image("o.png");
ivOne = new ImageView(image);
}

@Override
public void initialize(URL url, ResourceBundle rb) {

}
}

可以在这个 Eclipse 屏幕截图中看到项目布局:

enter image description here

最佳答案

从您问题中的屏幕截图来看,该图像与 FXMLDocumentController 类位于同一包中。

Image constructor您正在使用的是期望图像的 URL 字符串版本:获取此类 URL 的最佳方法是使用 getClass().getResource(...) (因为无论您是从文件系统还是从 jar 文件加载,这都适用)。 getClass().getResource(...) 将相对于当前类进行解析(如果资源名称以前导 / 开头,则相对于类路径进行解析):

Image image = new Image(getClass().getResource("o.png").toExternalForm());

然后你应该做的不是创建一个新的ImageView

ivOne.setImage(image);

关于java - 使用 JavaFX Scene Builder 在代码中更改 ImageView 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239934/

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