[英]How to open a folder/Directory in Java
我有一個一TilePane imageView
項目,每個項目ImageView的顯示圖像從我的電腦的目錄了。 單擊tilePane
中的任何圖像時,會在控制台上顯示一條消息,其中包含指向圖像所在文件夾的目錄路徑地址,例如:
You clicked: ImageResources/wp.png
我想進一步擴展它,以便在單擊特定圖像時打開該圖像所在的文件夾。
我在下面的實現僅打印以控制台以下消息,但是沒有打開目錄/文件夾。 消息是:
File Not Found
如何使它工作,以便打開文件夾|目錄? 謝謝大家。
另外,可以打開目錄並選擇單擊的圖像,這將是一個額外的操作,但現在不是優先事項。
到目前為止,我的實現如下:
public class TilePaneExample extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox(30);
String[] imageResources = new String[]{
//loading images
"ImageResources/facebook.png",
"ImageResources/faviicon.png",
"ImageResources/jquery-logo.png",
"ImageResources/linkedin_32.png",
"ImageResources/loading1.png",
"ImageResources/twitter.png",
"ImageResources/twitter_32.png",
"ImageResources/wp.png",};
// Pane
TilePane tilePane = new TilePane();
tilePane.setHgap(5);
tilePane.setVgap(5);
for (final String imageResource : imageResources) {
Image image = new Image(getClass().getResourceAsStream(imageResource));
ImageView imageView = new ImageView(image);
imageView.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
File f = new File(imageResource);
String absolutePath = f.getAbsolutePath();
String folderPath = absolutePath.
substring(0, absolutePath.lastIndexOf(File.separator));
try {
Desktop.getDesktop().open(new File(folderPath));
} catch (IllegalArgumentException iae) {
System.out.println("File Not Found");
} catch (IOException ex) {
Logger.getLogger(TilePaneExample.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
tilePane.getChildren().add(imageView);
}
root.getChildren().addAll(tilePane);
primaryStage.setTitle("TilePane Example");
Scene scene = new Scene(root, 300, 150);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
例如,單擊第二個圖像“ ImageResources / faviicon.png”,將其文件夾路徑打印為D:\\ standAloneDev \\ java \\ workingDir \\ Jive \\ TilePaneExample \\ ImageResources
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.