在程序中使用多个showInputDialogs。 当这些输入中的一个弹出时,它会冻结背景中的所有其他窗口,直到它接收到输入,是否有办法使其不冻结其他窗口?showInputDialog冻结其他窗口
0
A
回答
3
如果通过“冻结”您的意思是用户无法访问其他窗口,那么关键是使新对话框成为非模态对话框。您可以从JOptionPane中提取JDialog,然后选择以非模式方式显示它。 JOptionPane API将告诉你如何。搜索“直接使用”部分:
编辑:安德鲁州也是! 1+
与代码玩....
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.*;
public class Foo {
public static void main(String[] args) {
final JTextField textfield = new JTextField(10);
textfield.setFocusable(false);
final JPanel panel = new JPanel();
panel.add(textfield);
panel.add(new JButton(new AbstractAction("Push Me") {
private JOptionPane optionPane;
private JDialog dialog;
private JTextField optionTextField = new JTextField(10);
@Override
public void actionPerformed(ActionEvent arg0) {
if (dialog == null) {
JPanel optionPanel = new JPanel(new BorderLayout());
optionPanel.add(new JLabel("Enter some stuff"),
BorderLayout.PAGE_START);
optionPanel.add(optionTextField, BorderLayout.CENTER);
optionPane = new JOptionPane(optionPanel,
JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
dialog = optionPane.createDialog(panel, "Get More Info");
dialog.setModal(false);
dialog.addComponentListener(new ComponentAdapter() {
@Override
public void componentHidden(ComponentEvent arg0) {
Integer value = (Integer) optionPane.getValue();
if (value == null) {
return;
}
if (value == JOptionPane.OK_OPTION) {
textfield.setText(optionTextField.getText());
}
}
});
}
dialog.setVisible(true);
}
}));
JFrame frame = new JFrame("Frame");
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
3
使用非模态JDialog
代替。详情请参阅How to Use Modality in Dialogs。
相关问题
- 1. wpf - 窗口冻结
- 2. ctrl - ]冻结窗口?
- 3. SoapUI窗口冻结
- 4. socket.connect()冻结窗口
- 5. CFRunLoopRunInMode冻结主窗口
- 6. OpenCV窗口正在冻结
- 7. 窗口正在冻结
- 8. 登录窗口冻结
- 9. matplotlib平局()冻结窗口
- 10. 结果页面在其他窗口
- 11. 当其他窗口处于活动状态时,我的java程序会冻结
- 12. 显示模态对话框(MessageBox中)冻结其他窗口在应用
- 13. 在其他窗口之上的窗口
- 14. 从其他窗口(Qt)释放窗口?
- 15. 线程循环冻结游戏窗口
- 16. WPF的“冻结”内容窗口bug
- 17. VSTO/Word:如何冻结文档窗口?
- 18. 创建“冻结窗口”效果
- 19. 定时器冻结我的WPF窗口
- 20. 使用SetParent冻结父窗口
- 21. TortoiseSVN提交窗口冻结(Windows 10)
- 22. Pygame窗口冻结时代码运行
- 23. 的Tkinter窗口冻结从脚本
- 24. Tkinter名称错误:窗口冻结
- 25. New-VirtualEnvironment命令冻结了PowerShell窗口
- 26. C++ - 窗口消息循环冻结
- 27. 窗口pygame的冻结,同时等待
- 28. delphi冻结窗口上的屏幕
- 29. C#线程调用冻结窗口
- 30. 从子窗口添加一些项目后冻结主窗口
*“搜索部分标题为”直接使用:“”哦,我没有想到这一点。 +1它*很难重新创建'JOptionPane'的功能.. –
我检查了它,但我没有看到它如何与inputdialogs一起工作?我输入tablename = JOptionPane.showInputDialog(“输入表名*(使用大写字母)”)的样式inputdialogs; – Looptech