JavaFXでの画像ギャラリーの作成に取り組んでいます。画像を正しく表示できない

Java Man:

私はjavafxを使用して画像ギャラリーを作成しています。これに関してインターネットで多くのことを見つけましたが、この問題について適切なヘルプを得ることができませんでした。picasaビューアのような画像ギャラリーを1つ作成する必要があります。すべての画像が私の画像ビューのサムネイルビューにあり、その後、ポップアップビューアーにある画像を選択すると、そのためのコードをいくつか作成しましたが、適切な出力が得られませんでした。フォルダ内のすべての画像は、同じ座標から再描画されます。以下は私のコードと出力です。

@Override
public void initialize(URL url, ResourceBundle rb) {

    String path = "/home/ubuntu/eclipse with liferay/Desktop/imagetest/";

    File folder = new File(path);
    File[] listOfFiles = folder.listFiles();

    for (final File file : listOfFiles) {

            ImageView imageView;
            imageView = createImageView(file);
            imagecontainer.getChildren().addAll(imageView);

    }

}
 private ImageView createImageView(final File imageFile) throws FileNotFoundException, FileNotFoundException, FileNotFoundException, FileNotFoundException {
    // DEFAULT_THUMBNAIL_WIDTH is a constant you need to define  
    // The last two arguments are: preserveRatio, and use smooth (slower) resizing  

    ImageView imageView = null;
    try {

        final Image image;

        image = new Image(new FileInputStream(imageFile), DEFAULT_THUMBNAIL_WIDTH, 0, true, true);
        imageView = new ImageView(image);

    } catch (FileNotFoundException ex) {
        Logger.getLogger(GalleryController.class.getName()).log(Level.SEVERE, null, ex);
    }
    return imageView;

}

}

出力

問題を解決するのを手伝ってください。サムネイル表示で画像を1枚ずつ表示したい。

うちはイタチ:

TilePaneを作成し、それにImageViewを追加する必要があります。必要に応じてScrollPaneを使用できます。ダブルクリックしてフルスクリーンプレビューを作成する完全な例を以下に示します。もちろん、FXMLを作成するために必要な変更を行うことができます:)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.TilePane;
import javafx.scene.paint.Color;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class ImageGallery extends Application {

    Stage stage;

    @Override
    public void start(Stage primaryStage) throws Exception {
        stage = primaryStage;
        ScrollPane root = new ScrollPane();
        TilePane tile = new TilePane();
        root.setStyle("-fx-background-color: DAE6F3;");
        tile.setPadding(new Insets(15, 15, 15, 15));
        tile.setHgap(15);

        String path = "/home/ubuntu/eclipse with liferay/Desktop/imagetest/";

        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();

        for (final File file : listOfFiles) {
                ImageView imageView;
                imageView = createImageView(file);
                tile.getChildren().addAll(imageView);
        }


        root.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); // Horizontal
        root.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED); // Vertical scroll bar
        root.setFitToWidth(true);
        root.setContent(tile);

        primaryStage.setWidth(Screen.getPrimary().getVisualBounds().getWidth());
        primaryStage.setHeight(Screen.getPrimary().getVisualBounds()
                .getHeight());
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    private ImageView createImageView(final File imageFile) {
        // DEFAULT_THUMBNAIL_WIDTH is a constant you need to define
        // The last two arguments are: preserveRatio, and use smooth (slower)
        // resizing

        ImageView imageView = null;
        try {
            final Image image = new Image(new FileInputStream(imageFile), 150, 0, true,
                    true);
            imageView = new ImageView(image);
            imageView.setFitWidth(150);
            imageView.setOnMouseClicked(new EventHandler<MouseEvent>() {

                @Override
                public void handle(MouseEvent mouseEvent) {

                    if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){

                        if(mouseEvent.getClickCount() == 2){
                            try {
                                BorderPane borderPane = new BorderPane();
                                ImageView imageView = new ImageView();
                                Image image = new Image(new FileInputStream(imageFile));
                                imageView.setImage(image);
                                imageView.setStyle("-fx-background-color: BLACK");
                                imageView.setFitHeight(stage.getHeight() - 10);
                                imageView.setPreserveRatio(true);
                                imageView.setSmooth(true);
                                imageView.setCache(true);
                                borderPane.setCenter(imageView);
                                borderPane.setStyle("-fx-background-color: BLACK");
                                Stage newStage = new Stage();
                                newStage.setWidth(stage.getWidth());
                                newStage.setHeight(stage.getHeight());
                                newStage.setTitle(imageFile.getName());
                                Scene scene = new Scene(borderPane,Color.BLACK);
                                newStage.setScene(scene);
                                newStage.show();
                            } catch (FileNotFoundException e) {
                                e.printStackTrace();
                            }

                        }
                    }
                }
            });
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        return imageView;
    }

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

}

出力

ここに画像の説明を入力してください

これは、ウィンドウのサイズを変更し、必要に応じてScrollPaneを表示するときにうまく機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ビットマップからURIを作成する方法はありますが、画像ギャラリーに表示したくないですか?

分類Dev

ギャラリー、ImageBitmap、ImageURIの表示画像が機能しないようです

分類Dev

独自のUNIXシェルの作成に取り組んでいますが、「ls」コマンドを実行すると、アドレスが正しくないというエラーが表示されることがあります。

分類Dev

asynctaskを使用して、ギャラリー内の別のフォルダーに画像を移動できない

分類Dev

ギャラリーからの画像の取得-許可なく取得できます

分類Dev

ページの下部にギャラリーを作成しようとしていますが、lightbox2の画像が各行の横に表示されないのはなぜですか?

分類Dev

表示:ギャップを取り除くために画像でブロックが機能しない

分類Dev

ギャラリーは画像を表示できません

分類Dev

パネル画像ギャラリーから画像ボックスに画像を読み込んでいます

分類Dev

さまざまなサイズの画像に適応するギャラリーを作成するにはどうすればよいですか?

分類Dev

Android 7.0のカメラまたはギャラリーから切り抜き用の画像を選択するにはどうすればよいですか?

分類Dev

Picassoが特定のSamsungデバイスでギャラリーの画像を表示しない

分類Dev

アプリで保存した画像がギャラリーに表示されない

分類Dev

2行の画像間のギャップを取り除くにはどうすればよいですか?

分類Dev

電話メモリ(SDカードではない)のギャラリーフォルダに画像を保存する必要があります

分類Dev

この単純な画像ギャラリーコードをどのように改善できますか?

分類Dev

2行目に折り返されるブートストラップ列は下に整列し、大きなギャップを残します。このギャップを取り除くにはどうすればよいですか?

分類Dev

ギャラリーで画像とビデオの両方を表示できません

分類Dev

iOSアプリからphpに画像をアップロードする---正しく理解できない---何が足りないのですか?

分類Dev

画像ギャラリーを作成するときにグローバル変数の問題を回避するにはどうすればよいですか?

分類Dev

ウィンドウを小さくしたときにdiv内の画像が切り取られないようにする方法を理解できません

分類Dev

Androidの内部ストレージに保存されているすべての画像を読んでカスタムギャラリーを作成する方法

分類Dev

画像ギャラリーは最初の画像を大きくします

分類Dev

レスポンシブ画像ギャラリーでキャプションが正しく遷移しない

分類Dev

Androidギャラリーアプリ-入力がないため画像を選択できません

分類Dev

ギャラリーは内部ストレージからの画像を表示できません

分類Dev

ギャラリーから画像を読み込んでいます、エラーを返します

分類Dev

Androidでギャラリーの画像をクリックしたときにonActivityResultの応答がありません

分類Dev

クリックイベントで画像タブギャラリーを作成しようとしています

Related 関連記事

  1. 1

    ビットマップからURIを作成する方法はありますが、画像ギャラリーに表示したくないですか?

  2. 2

    ギャラリー、ImageBitmap、ImageURIの表示画像が機能しないようです

  3. 3

    独自のUNIXシェルの作成に取り組んでいますが、「ls」コマンドを実行すると、アドレスが正しくないというエラーが表示されることがあります。

  4. 4

    asynctaskを使用して、ギャラリー内の別のフォルダーに画像を移動できない

  5. 5

    ギャラリーからの画像の取得-許可なく取得できます

  6. 6

    ページの下部にギャラリーを作成しようとしていますが、lightbox2の画像が各行の横に表示されないのはなぜですか?

  7. 7

    表示:ギャップを取り除くために画像でブロックが機能しない

  8. 8

    ギャラリーは画像を表示できません

  9. 9

    パネル画像ギャラリーから画像ボックスに画像を読み込んでいます

  10. 10

    さまざまなサイズの画像に適応するギャラリーを作成するにはどうすればよいですか?

  11. 11

    Android 7.0のカメラまたはギャラリーから切り抜き用の画像を選択するにはどうすればよいですか?

  12. 12

    Picassoが特定のSamsungデバイスでギャラリーの画像を表示しない

  13. 13

    アプリで保存した画像がギャラリーに表示されない

  14. 14

    2行の画像間のギャップを取り除くにはどうすればよいですか?

  15. 15

    電話メモリ(SDカードではない)のギャラリーフォルダに画像を保存する必要があります

  16. 16

    この単純な画像ギャラリーコードをどのように改善できますか?

  17. 17

    2行目に折り返されるブートストラップ列は下に整列し、大きなギャップを残します。このギャップを取り除くにはどうすればよいですか?

  18. 18

    ギャラリーで画像とビデオの両方を表示できません

  19. 19

    iOSアプリからphpに画像をアップロードする---正しく理解できない---何が足りないのですか?

  20. 20

    画像ギャラリーを作成するときにグローバル変数の問題を回避するにはどうすればよいですか?

  21. 21

    ウィンドウを小さくしたときにdiv内の画像が切り取られないようにする方法を理解できません

  22. 22

    Androidの内部ストレージに保存されているすべての画像を読んでカスタムギャラリーを作成する方法

  23. 23

    画像ギャラリーは最初の画像を大きくします

  24. 24

    レスポンシブ画像ギャラリーでキャプションが正しく遷移しない

  25. 25

    Androidギャラリーアプリ-入力がないため画像を選択できません

  26. 26

    ギャラリーは内部ストレージからの画像を表示できません

  27. 27

    ギャラリーから画像を読み込んでいます、エラーを返します

  28. 28

    Androidでギャラリーの画像をクリックしたときにonActivityResultの応答がありません

  29. 29

    クリックイベントで画像タブギャラリーを作成しようとしています

ホットタグ

アーカイブ