Java JFileChooser无限循环
当我关闭我的Java JFileChooser无限循环,java,loops,libgdx,infinite-loop,jfilechooser,Java,Loops,Libgdx,Infinite Loop,Jfilechooser,当我关闭我的JFileChooser对话框时,它会再次打开。我正在使用libgdx更新来检查输入 这是输入代码 if(!SaveDialog.open) { if(input.isKeyPressed(Input.Keys.S)) { SaveDialog.Save(pixmap); } } 如果我快速按下S,对话框只会打开一次,但如果我按下它2秒钟,就会出现无数(我想)个JFileChooser对话框 这是我的密码 public class SaveDialo
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();
}
}
}
有人能帮我解决这个问题吗。isKeyPressed(Input.Keys.S)确定S键当前是否被按下没有帮助 如果在第二次调用isKeyPressed()之前没有给libgdx机会再次轮询输入,那么我怀疑它仍然会认为它被按下了 如果这不是问题所在,请尝试记录按键的状态,并仅在状态从未按下变为按下时打开对话框 例如:
if(!SaveDialog.open) {
boolean isSPressed = input.isKeyPressed(Input.Keys.S);
if(!wasSpressed && isSPressed) {
SaveDialog.Save(pixmap);
}
wasSPressed = isSPressed;
}
如果(!SaveDialog.open),则
的上下文是什么?如果是在一个无休止的循环中,你按住s可能就是问题所在。尝试输入System.out.println(“按键”)代码>就在您的if(input.isKeyPressed(input.Keys.S))
下面。如果它在控制台中重复出现,这就是您的问题。1)查看何时调用“保存”对话框会有所帮助。2)而不是静态<代码> JFileChooser < /代码>,考虑创建一个单独的实例<代码> SaveDialog < /C> >或者甚至<代码> JFileChooser < /C>。3)代替使用<代码>(如果)(<)>代码>,考虑使用