📑

ProcessingでOS独自のファイル選択ダイアログを実装する

2023/02/01に公開

ProcessingでSwingのFileChooserによるファイル選択画面Java.awtによるOS独自ファイル選択画面の内容を統合し、Processing内でOS独自のファイル選択ダイアログ表示を実装した。
FileDialog.getFile()だと選択したファイル名しか返ってこないっぽいのでFileDialog.getDirectory()でディレクトリを取得して合体して呼び出している。

拡張子によるフィルタリング表示も可能なんだろうけど、よくわからず。

sketch.pde
//Citation:
//https://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser.html
//https://atmarksharp.v01.jp/posts/java-os-file-dialog.html
import java.awt.*;

PImage pimage;
String filename = null;
String directory = null;

void setup() {
  size(600, 600);
  background(255);
}

void draw() {
}

void mousePressed() {
  showAWTDialog();
}

void showAWTDialog() {
  FileDialog dialog = new FileDialog(
    (Frame)null, 
    "FileDialog (AWT)", 
    FileDialog.LOAD);

  dialog.setVisible(true);
  filename = dialog.getFile();
  directory = dialog.getDirectory();

  print("FileDialog (AWT): ");

  if (filename != null) {
    println(filename);
    String ext = filename.substring(filename.lastIndexOf('.') + 1);
    ext = ext.toLowerCase();

    if (ext.equals("jpg") || ext.equals("png") ||  ext.equals("gif") || ext.equals("tga")) {
      
      pimage = loadImage(directory + filename);
      image(pimage, 0, 0, pimage.width, pimage.height);
    }
  } else {
    println("cancelled");
  }
}

Discussion