当我关闭JFileChooser
对话框时,它会再次打开。我正在使用libgdx更新来检查输入。
这是输入代码......
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();
}
}
}
有人可以帮我解决这个问题。
答案 0 :(得分:1)
isKeyPressed(Input.Keys.S)确定S键是否当前按下是没有帮助的。
如果你没有给libgdx一次机会在第二次调用isKeyPressed()之前再次轮询输入,那么我怀疑它仍会认为它被按下了。
如果不是问题,请尝试记录键的状态,只有当状态从未按下变为按下时才打开对话框。
例如:
if(!SaveDialog.open) {
boolean isSPressed = input.isKeyPressed(Input.Keys.S);
if(!wasSpressed && isSPressed) {
SaveDialog.Save(pixmap);
}
wasSPressed = isSPressed;
}