當我關閉我的JFileChooser
對話框時,它會再次打開。我正在使用libgdx更新來檢查輸入。Java JFileChooser無限循環
這裏是輸入碼...
if(!SaveDialog.open) {
if(input.isKeyPressed(Input.Keys.S)) {
SaveDialog.Save(pixmap);
}
}
如果我按S
很快,對話框打開只有一次,但如果我按下它像2秒,就會有無窮的(我認爲)JFileChooser
對話數。
這是我的代碼...
public class SaveDialog {
private static boolean inited = false;
private static JFileChooser fc;
public static boolean open = false;
public static void Init() {
fc = new JFileChooser();
fc.setFileFilter(new FileFilter() {
public String getDescription() {
return ".png";
}
public boolean accept(File f) {
return f.getName().endsWith(".png");
}
});
inited = true;
}
public static void Save(Pixmap pixmap) {
open = true;
if(!inited) {
Init();
}
fc.showSaveDialog(null);
byte[] data;
try {
data = PNG.toPNG(pixmap);
FileHandle fh = new FileHandle(fc.getSelectedFile() + ".png");
fh.writeBytes(data, false);
open = false;
}
catch (IOException e) {
open = false;
e.printStackTrace();
}
}
}
可能有人請幫我解決這個問題。
什麼是'如果(SaveDialog.open!)'語境?如果它處於一個無限循環中,則可能是問題所在。嘗試在你的'if(input.isKeyPressed(Input.Keys.S))'下面放置'System.out.println(「Key pressed」);''。如果它在控制檯中反覆出現,那就是你的問題。 – purtip31
1)這將有助於查看何時調用保存對話框。 2)不要使用靜態的'JFileChooser',而應考慮創建'SaveDialog'或者甚至'JFileChooser'的單個實例。 3)不要執行'if(!inited)',請考慮使用[靜態初始化塊](http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html) – user845279