17

画像付きのダイアログを作成するために、このコードをテストしました。

final int xSize = 400;
final int ySize = 280;
final Color backgroundColor = Color.WHITE;
final String text = "SQL Browser";
final String version = "Product Version: 1.0";

final Stage aboutDialog = new Stage();
aboutDialog.initModality(Modality.WINDOW_MODAL);

Button closeButton = new Button("Close");

closeButton.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent arg0) {
        aboutDialog.close();
    }
});

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));

Image img = new Image("logo.png");
ImageView imgView = new ImageView(img);

grid.add(imgView, 0, 0);

grid.add(new Text(text), 0, 1);
grid.add(new Text(version), 0, 2);
grid.add(closeButton, 14, 18);

Scene aboutDialogScene = new Scene(grid, xSize, ySize, backgroundColor);
aboutDialog.setScene(aboutDialogScene);
aboutDialog.show();

画像ファイルをディレクトリに配置しました/src。しかし、なぜか画像が表示されません。私の間違いを正すのを手伝ってもらえますか?

4

5 に答える 5

55

このコードを置き換えるだけです:

Image img = new Image("logo.png");

これとともに

Image img = new Image("file:logo.png");

ドキュメント参照。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html

クラスにaStringを渡すと、 4 つの異なる方法で処理できます( docu からコピー)。Image

// The image is located in default package of the classpath
Image image1 = new Image("/flower.png");

// The image is located in my.res package of the classpath
Image image2 = new Image("my/res/flower.png");

// The image is downloaded from the supplied URL through http protocol
Image image3 = new Image("http://sample.com/res/flower.png");

// The image is located in the current working directory
Image image4 = new Image("file:flower.png");

プレフィックスは単なる URI スキーム、file:つまりhttp:プロトコル分類子に対応するものです。これは、ファイル ブラウザーや Web ブラウザーでも機能します... ;)

詳細については、ファイル URI スキームの wiki ページを参照してください: https://en.wikipedia.org/wiki/File_URI_scheme

ハッピーコーディング、

カラッシュ

于 2013-04-19T11:56:55.260 に答える
16

これを試して:

img = new Image("/logo.png");

URL を示すプロトコル部分 ( http:またはfile:など) が指定されていない場合、ファイルはデフォルトのパッケージにあると想定されます。com.my.images などの別のパッケージに入れたい場合は、この情報を次のようなパスに追加します。

img = new Image("/com/my/images/logo.png");
于 2013-04-20T15:48:35.917 に答える
9
Image img = new Image("file:/logo.png");

またはパスを使用する方法:

Image img = new Image("file:c:/logo.png");

また

File f = new File("c:\\logo.png");
Image img = new Image(f.toURI().toString());

以下も使用できます。

new Image(file:src/logo.png) //root of project
于 2016-06-15T00:25:33.627 に答える
4

これは次のように機能します。

Image image  = new Image(getClass()
        .getResourceAsStream("ChimpHumanHand.jpg"));
于 2015-03-07T15:45:06.337 に答える
0

イメージをコピーして、ソース パッケージ (NetBeans IDE のソース パッケージ) が存在するフォルダに貼り付けます。それで

Image image = new Image("a1.jpg");
Image image = new Image("File:a1.jpg");

どちらも機能します。

于 2015-05-22T11:58:42.560 に答える