0

TilePane に一覧表示された画像があり、クリックするとそれぞれのファイル パスが出力されます。ただし、次のようなものが得られます。

javafx.scene.image.Image@1a3d58b

D:\Xampp\ のような通常の形式で印刷するためのパスを取得するにはどうすればよいですか

ありがとうございました。

クラスは次のとおりです。

public class FlowTileExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox(30);

        //loading images
        Image[] im = new Image[8];
        im[0] = new Image(getClass().getResourceAsStream("facebook.png"));
        im[1] = new Image(getClass().getResourceAsStream("faviicon.png"));
        im[2] = new Image(getClass().getResourceAsStream("jquery-logo.png"));
        im[3] = new Image(getClass().getResourceAsStream("linkedin_32.png"));
        im[4] = new Image(getClass().getResourceAsStream("loading1.png"));
        im[5] = new Image(getClass().getResourceAsStream("twitter.png"));
        im[6] = new Image(getClass().getResourceAsStream("twitter_32.png"));
        im[7] = new Image(getClass().getResourceAsStream("wp.png"));

        VBox up = new VBox(20);
        Text text4flow = new Text("Images in FlowPane");
        text4flow.setFont(Font.font("Calibri", FontWeight.BOLD, 30));
        text4flow.setUnderline(true);
        VBox.setMargin(text4flow, new Insets(10, 0, 0, 10));
        //creating Flow Pane
        FlowPane flowpane = new FlowPane();
        flowpane.setHgap(5);
        flowpane.setVgap(5);

        EventHandler mouseHandler = new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent t) {
                ImageView imageView = (ImageView) t.getSource();
                System.out.println("You clicked " + imageView.getImage());
            }
        };

        for (int i = 0; i < 8; i++) {
            ImageView imageView = new ImageView(im[i]);
            imageView.setOnMouseClicked(mouseHandler);
            flowpane.getChildren().add(imageView);
        }

        up.getChildren().addAll(text4flow, flowpane);

        VBox down = new VBox(20);
        Text text4tile = new Text("Images in TilePane");
        text4tile.setFont(Font.font("Calibri", FontWeight.BOLD, 30));
        text4tile.setUnderline(true);
        VBox.setMargin(text4tile, new Insets(10, 0, 0, 10));

        //creating Tile Pane
        TilePane tilepane = new TilePane();
        tilepane.setHgap(5);
        flowpane.setVgap(5);
        for (int i = 0; i < 8; i++) {
            tilepane.getChildren().add(new ImageView(im[i]));
        }
        down.getChildren().addAll(text4tile, tilepane);
        root.getChildren().addAll(up, down);
        primaryStage.setTitle("Flow And Tile Panes Example");
        Scene scene = new Scene(root, 500, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
4

2 に答える 2

0

@ durron597は正しいです。Image オブジェクトには、イメージが読み込まれる場所からファイルのパスの詳細がありません。

将来の使用/アップグレードを考えていないデモ プロジェクトや小さなプロジェクトに使用している場合は、ここにちょっとしたコツがあります。

使ってみて

imageView.getImage().impl_getUrl()

これはあなたを返します

file:<your file path>

したがって、それをフィルタリングするには、

imageView.getImage().impl_getUrl().substring(5)
于 2014-05-14T13:23:29.580 に答える