我正在构建诸如NotePad之类的文本编辑器程序。 我想使FindDialog始终位于MainFrame的顶部,但用户仍然可以将NoteFrame中MainFrame的JTextArea上的文本进行编辑。
请帮助我!
我使用了方法jdialog.setModal(true)。它使对话框始终位于父级顶部,但用户无法在父级上编辑文本。
编辑:方法setAlwaysOnTop()在所有窗口(包括浏览器,其他程序..)顶部建立对话框,所以我无法使用它
答案 0 :(得分:1)
我发现我们可以使用super(parent)来实现这一目标。
class MyDialog extends JDialog {
public MyDialog(JFrame parent) {
super(parent);
}
/* Other codes */
}
答案 1 :(得分:0)
(可以)支持多种模式类型。使用JDialog.setModalityType
方法并选择相关的模态类型。有关更多信息,请在此处查看Javadoc:https://docs.oracle.com/javase/7/docs/api/java/awt/Dialog.html#setModalityType(java.awt.Dialog.ModalityType)
顺便说一句,呼叫setModal(true)
等效于setModalityType(Dialog.ModalityType.MODELESS)
。在这种情况下,用户可以编辑父级。
因此您可以尝试以下一种方法:
setModalityType(Dialog.ModalityType.DOCUMENT_MODAL)
或者在创建JDialog时通过模态
new JDialog(parent, "Title", Dialog.ModalityType.DOCUMENT_MODAL);
还有关于Oracle模式的有用教程: https://docs.oracle.com/javase/tutorial/uiswing/misc/modality.html
请注意,“文档”和“应用程序”模式之间略有不同。 选择适合您的情况的
。