gpt4 book ai didi

java - JDialog 因失去焦点而卡住?

转载 作者:行者123 更新时间:2023-12-01 18:48:00 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序应该通过允许您编辑 map 中的单个纹理来促进纹理贴图的制作。我有几个地方使用 JDialog 来处理诸如输入 map 的图 block 大小、新 map 的初始大小以及用户在编辑完 map 时按下的按钮。使用外部程序(例如 Photoshop 或 Paint)选择纹理。但是,只要其中一个 JDialog 启动,如果程序失去焦点,它就会完全无响应。这是我在外部编辑选定纹理时弹出的 JDialog 的代码:

JDialog editing = new JDialog(mainFrame, "Externally Editing");//mainFrame is the name of the JFrame containing everything.
JPanel pnl = new JPanel();
editing.setLayout(new BorderLayout());
pnl.setPreferredSize(new Dimension(150, 60));
editing.add(pnl);
editing.pack();
JButton button = new JButton("Done Editing");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
editng = false;//Obviously, a boolean that I have outside of this method.
}
});
pnl.add(button);
Thread.sleep(100);
editing.setVisible(true);
while(editng){System.out.print("");}//Doing nothing while the user is externally editing.. Unfortunately, if I don't have "System.out.print("");" it doesn't work.. Oh, Java..
new Thread(new Runnable(){public void run(){editing.dispose();}}).start();//Gotta dispose of it in a separate thread since AWT isn't Thread-safe... Ugh..

我假设它在为 JDialog 创建/拥有的 AWT 线程中卡住,而我的线程只是等待按下按钮。这不可能发生,因为 JDialog 被卡住了。

最佳答案

使对话框成为模态的。您的应用程序将停止处理,直到对话框关闭

关于java - JDialog 因失去焦点而卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com