protected FileDialogPeer createFileDialog (FileDialog fd) { checkHeadless(); GtkMainThread.createWindow(); /* <---- missing */ return new GtkFileDialogPeer (fd); } /*Test case results in deadlock:*/ import java.awt.*; public class FileLoadDialog { public static void main(String[] args) { Frame fr = new Frame("Frame"); FileDialog fd = new FileDialog(fr,"Find file path...", FileDialog.LOAD ); fd.setVisible(true); if (fd.getFile() != null) System.out.println(fd.getDirectory() + fd.getFile()); else System.out.println("Load cancelled........"); } }