gpt4 book ai didi

java - ImageView 不显示图像 - JavaFX

转载 作者:行者123 更新时间:2023-12-02 00:48:05 26 4
gpt4 key购买 nike

我在 Java fx Controller 类中有一些代码,如下所示。图像没有显示。图片到位,没有错误。请指导。

@Override
public void initialize(URL location, ResourceBundle resources) {
image1 = new Image(getClass().getResource("php81e3DF.png").toExternalForm());
image2 = new Image(getClass().getResource("phpqJypee.png").toExternalForm());
image3 = new Image(getClass().getResource("php2XSnrZ.png").toExternalForm());
defaultt = new Image(getClass().getResource("phpxrxh4T.png").toExternalForm());

imgVw1 = new ImageView();
imgVw1.setX(200);
imgVw1.setY(200);
imgVw2 = new ImageView();
imgVw3 = new ImageView();

imgVw1.setImage(image1);
imgVw2.setImage(image2);
imgVw3.setImage(image3);
}

我无法显示图像。我确信 fxml 和 Controller 类正在使用正确的注释。我在类中使用了正确的@fxml,并且变量没有错误。

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

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>

<GridPane fx:id="rootPane" alignment="TOP_CENTER" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<GridPane hgap="2.0" vgap="2.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<children>
<ImageView fx:id="imgVw1" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" />
<ImageView fx:id="imgVw2" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" />
<ImageView fx:id="imgVw3" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="2" />
<Button fx:id="imageV1Button" mnemonicParsing="false" onAction="#button1Pressed" text="Flip" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
<Button fx:id="imageV2Button" mnemonicParsing="false" onAction="#button1Pressed" text="Flip" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
<Button fx:id="imageV3Button" mnemonicParsing="false" onAction="#button1Pressed" text="Flip" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="TOP" />
</children>
</GridPane>
</children>
<columnConstraints>
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
</rowConstraints>
</GridPane>

最佳答案

您不必添加这些代码行:

imgVw1 = new ImageView();
imgVw2 = new ImageView();
imgVw3 = new ImageView();

当你这样做时会发生什么:

  1. FXMLLoader 读取您的 FXML 文件以初始化整个 GridPane:imgVw1imgVw2imgVw3创建并添加到 rootPane 的子列表中。

  2. 您为 imgVw1imgVw2imgVw3 定义新值,这意味着它们不再等于已定义的值到 FXML 中。因此,重新分配会自动使您的组件从 rootPane 的子列表中消失,并且不会显示任何 ImageView

删除这 3 行应该可以解决你的问题(至少对我有用 ☻)。

关于java - ImageView 不显示图像 - JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881947/

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