薄苏 2023-05-28 00:22 采纳率: 100%
浏览 44
已结题

idea用javafx怎么插入图片

按照网上对javafx的讲解写代码,实在改不出来了,不知道为什么图片加载不了,没有报错,但是窗口是白色的,什么都没有

package demo;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;


public class fx5 extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane root = new AnchorPane();
        ImageView imageView = new ImageView();
        Image image = new Image("resource/110.jpg");
        imageView.setImage(image);

        root.getChildren().add(imageView);
        Scene scene = new Scene(root, 1000, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

如图所示关于图片存放:

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-28 02:02
    关注
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7726975
    • 除此之外, 这篇博客: 用JavaFX写个俄罗斯方块中的 一个游戏逻辑类 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 随机形状、移动、消行、算分等都在这个类里边实现。这个类里边不涉及UI元素,纯粹游戏逻辑。

      比如消行部分的逻辑实现:

      	private void removeRows() {
      		if (preview != null) {
      			for (var row = 0; row < preview.getHeight(); row++) {
      				for (var col = 0; col < preview.getWidth(); col++) {
      					if (preview.getCell(row, col)) {
      						var cell = boardData[preview.getTop() + row][preview.getLeft() + col];
      						cell.visable = true;
      						cell.color = preview.color;
      					}
      				}
      			}
      		}
      		preview = null;
      
      		int removeCount = 0;
      		for (int row = 0; row < 20; row++) {
      			boolean b = true;
      			for (int col = 0; col < 10; col++) {
      				var cube = boardData[row][col].visable;
      				b = b && cube;
      			}
      
      			if (b) {
      				removed++;
      				removeCount++;
      				for (int ui = row - 1; ui >= 0; ui--) {
      					for (int uj = 0; uj < 10; uj++) {
      						var pre = boardData[ui][uj];
      						boardData[ui + 1][uj].visable = pre.visable;
      						boardData[ui + 1][uj].color = pre.color;
      					}
      				}
      			}
      		}
      
      		var tempScore = 0;
      		if (removeCount == 1)
      			tempScore += 100;
      		if (removeCount == 2)
      			tempScore += 200;
      		if (removeCount == 3)
      			tempScore += 400;
      		if (removeCount == 4)
      			tempScore += 400;
      
      		score += tempScore;
      		levelScore += tempScore;
      
      		if (levelScore >= 2000) {
      			if (level < 12) {
      				level++;
      				ticks = 1065 - level * 65;
      			} else
      				level = 1;
      
      			levelScore = 0;
      		}
      	}
    • 以下回答由chatgpt基于相关博客总结生成:

      对于在使用IDEA开发JavaFX应用程序中插入图片的问题,通常需要注意以下几点:

      1.图片的文件路径在项目的resources文件夹下,必须使用相对路径 2.文件名区分大小写,例如"xxx.png"与"xxx.PNG"是不同的文件名 3.图片文件格式必须是JavaFX支持的格式,例如".jpg", ".png"等

      下面是一个简单的示例代码,展示如何在JavaFX中插入图片:

      1.在项目的resources文件夹下创建一个名为"image.png"的图片文件

      2.在fxml文件中使用ImageView标签插入图片,注意设置图片的路径和大小

      <ImageView fitWidth="200" fitHeight="200" >
              <image>
                  <Image url="@/image.png"/>
              </image>
          </ImageView>
      

      3.如果是在Java代码中动态插入图片,则需要使用Image类,首先需要创建一个Image对象,然后将其设置为一个ImageView对象的图像源,最后将ImageView添加到场景中即可。

      Image image = new Image(getClass().getResourceAsStream("/image.png"));
      ImageView imageView = new ImageView(image);
      scene.getRoot().getChildren().add(imageView);
      

      如果使用以上方法仍无法加载图片,可以根据错误信息和日志文件进一步排查问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月28日