java JavaFX Imageview图像删除 1 周,3 日 Questions & Answers 1505 我需要一个如何处理将图像放入JavaFXImageView的示例。源图像位于文件系统或web浏览器中应用程序的外部。换言之;图像未在应用程序中内部移动 比尔 马克·斯通
# 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 楼答案 假设您正在寻找拖放功能,下面是一个将图像拖放到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); } }
# 1 楼答案
要添加放置在文件系统上的映像,请使用
file://
附加其位置并使用它对于可通过
http
访问的图像:# 2 楼答案
假设您正在寻找拖放功能,下面是一个将图像拖放到JavaFX应用程序并显示其缩略图的基本示例: