有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX Imageview图像删除

我需要一个如何处理将图像放入JavaFXImageView的示例。源图像位于文件系统或web浏览器中应用程序的外部。换言之;图像未在应用程序中内部移动

比尔

马克·斯通


共 (2) 个答案

  1. # 1 楼答案

    要添加放置在文件系统上的映像,请使用file://附加其位置并使用它

    ImageView view = new ImageView("file:///location_to_image/aaa.png");
    

    对于可通过http访问的图像:

    ImageView view = new ImageView("https://cdn1.iconfinder.com/data/icons/nuove/22x22/actions/fileclose.png");
    
  2. # 2 楼答案

    假设您正在寻找拖放功能,下面是一个将图像拖放到JavaFX应用程序并显示其缩略图的基本示例:

    import java.util.ArrayList;
    import java.util.List;
    
    import javafx.application.Application;
    import javafx.beans.binding.Bindings;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.control.ScrollPane;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.input.Dragboard;
    import javafx.scene.input.TransferMode;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.TilePane;
    import javafx.stage.Stage;
    
    public class ImageViewer extends Application {
    
        private static final int IMAGE_SIZE = 160 ;
    
        @Override
        public void start(Stage primaryStage) {
            TilePane imagePane = new TilePane();
            imagePane.setHgap(5);
            imagePane.setVgap(5);
    
            imagePane.setOnDragOver(event -> {
                Dragboard db = event.getDragboard();
                if (db.hasImage() || db.hasFiles()) {
                    event.acceptTransferModes(TransferMode.COPY);
                }
            });
    
            imagePane.setOnDragDropped(event -> {
                Dragboard db = event.getDragboard();
                if (db.hasImage()) {
                    ImageView imageView = new ImageView(db.getImage());
                    imageView.setFitHeight(IMAGE_SIZE);
                    imageView.setFitWidth(IMAGE_SIZE);
                    imageView.setPreserveRatio(true);
                    imagePane.getChildren().add(imageView);
                    event.setDropCompleted(true);
                } else if (db.hasFiles()) {
                    db.getFiles().forEach(file -> {
                        try {
                            Image image = new Image(file.toURI().toURL().toExternalForm(), IMAGE_SIZE, IMAGE_SIZE, true, true);
                            ImageView imageView = new ImageView(image);
                            imagePane.getChildren().add(imageView);
                        } catch (Exception exc) {
                            System.out.println("Could not load image "+file);
                        }
                    });
                    event.setDropCompleted(true);
                }
            });
    
            ScrollPane scroller = new ScrollPane();
            scroller.setContent(imagePane);
    
            imagePane.minHeightProperty().bind(Bindings.createDoubleBinding(() -> 
                scroller.getViewportBounds().getHeight(), 
                scroller.viewportBoundsProperty()));
            scroller.setFitToWidth(true);
            BorderPane root = new BorderPane(scroller, new Label("Drag images to pane below"), null, null, null);
            Scene scene = new Scene(root, 800, 600);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }