我正在使用JavaFX,在那里我编写了一个包含显示图像
的代码,通过我想在我的场景上显示图像,但它不起作用。图像不显示。
当我使用getAbsolutePath()时,
它还显示一个错误。虽然我70%的编码已经完成,但我只是坚持在现场显示图像(不上传)。
以下是我正在使用的代码:
package application;
import java.util.HashMap;
import java.io.File;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.stage.FileChooser;
import javafx.scene.Scene;
import javafx.scene.text.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.shape.Circle;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class Main extends Application {
public ImageView iv;
private GridPane gridpane;
//Image
Image img = new Image("application/PA_Image.jpg");
@Override
public void start(Stage primaryStage) {
try {
//Upload Image Button
final Button button = new Button("Display Image");
//FileChooser
final FileChooser fileChooser = new FileChooser();
button.setOnAction(e -> {
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
System.out.println(selectedFile.getAbsolutePath());
Image image = new Image(selectedFile.getAbsolutePath());
iv = new ImageView(image);
//Image uploadedImage = new Image(selectedFile.getAbsolutePath());
}
});
final StackPane stac = new StackPane();
stac.getChildren().add(button);
Scene scene = new Scene(stac,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
所以,我需要的是通过单击按钮并选择图像来显示我的场景中的图像。
Image()
构造函数需要URI
而不是绝对路径。有两种方法可以解决这个问题。
>
通过添加所需的前缀在 URI
中转动绝对路径
file://
使用<code>InputStream
示例:
button.setOnAction(e -> {
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
System.out.println(selectedFile.getAbsolutePath());
final InputStream targetStream; // Creating the InputStream
try
{
targetStream = new DataInputStream(new FileInputStream(selectedFile));
Image image = new Image(targetStream);
iv = new ImageView(image);
} catch (FileNotFoundException fileNotFoundException)
{
fileNotFoundException.printStackTrace();
}
}
});
您的代码还存在一些其他问题。
图像视图
并对其进行初始化。不是在单击按钮时,而是在开头图像视图
添加到场景中
ImageView
,只需更改图像即可。这是我基于你的代码:
public ImageView iv = new ImageView();
private GridPane gridpane;
@Override
public void start(Stage primaryStage) {
try {
//Upload Image Button
final Button button = new Button("Display Image");
//FileChooser
final FileChooser fileChooser = new FileChooser();
button.setOnAction(e -> {
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
final InputStream targetStream;
try {
targetStream = new DataInputStream(new FileInputStream(selectedFile));
Image image = new Image(targetStream);
iv.setImage(image); // Set Image
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
}
});
final StackPane stac = new StackPane();
stac.getChildren().add(button);
stac.getChildren().add(iv); // Add ImageView
Scene scene = new Scene(stac, 1600, 800);
//scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
我有一个巨大的问题显示一个上传的图片在Spring引导,问题是第一次我上传它,路径是完美的,一切都很好,但图像不显示,当我重新启动服务器图像显示。 我认为这是因为当启动项目时,它编译成一个.jar而没有映像,所以在重新启动项目之前,映像并不真实存在。 我不知道如何解决这个问题,不确定是否可能。
我一直试图使用FXML在JavaFX应用程序中显示我的图像,但没有成功。我的代码: 没有错误,但我的图像没有显示。我想图像已加载,但未显示。 这可能吗?我怎么查?如果是的话,不应该有一个错误给它吗? 事实上,即使我给出了一个不正确的名称,也没有运行时错误。也许没上子弹? 我也试过加载不同的图像和改变尺寸,没有任何效果。 ->运行时错误#1 ->林特错误+运行时错误#1 ->林特错误+运行时错误#1
问题内容: 我使用以下示例,它可以完美运行,但是我想同时上传多张图片。 http://jsfiddle.net/kkhxsgLu/2/ 谢谢您的帮助,我从angularjs开始 问题答案: 解: http://jsfiddle.net/orion514/kkhxsgLu/136/ :)
我有一个装满图像的文件夹要在我正在创建的游戏中实现,我想在窗口中显示这些。这是我迄今为止的代码。 这将是一个程序在IntelliJ/中从jar运行。“资产”文件夹与此文件位于同一目录中。我没有发现文件路径错误,所以我假设它可以找到图像,但它不会出现在屏幕上,而矩形会出现。 公平警告,我正在从头开始学习JavaFX,我发现没有太多关于事物如何工作的解释,所以这可能是一个愚蠢的问题。
它应该显示一个与掷骰子一致的图像,但什么也没有发生。有问题的图像在包中(如果有关系,请单击并拖入项目窗口)。我在system.out.print中添加了t,以便显示Dice1和2的结果,这样我就知道这是有效的。 我还需要添加一些东西来使它看起来像吗?我以前从未在JavaFX中使用过实际的图像....总的来说,我对JavaFX是新手。 GetChildren c:\users\ethan c.b的错
我正在尝试为Vaadin使用EasyUploads插件,但无法显示图像。 当我点击插件的“选择文件”按钮时,它会要求我打开一个文件。我从我的图片中选择了一些.png文件,插件显示了它下面图片的信息。 然后我按下我的“上传”按钮,这是目前需要的,只是为了首先显示上传的图像。 upload=EasyUpload用于选择文件的组件 图像=我与设计师一起绘制到布局中的嵌入组件。 但当我用浏览器查看页面时,