如何在Swing java中创建JFrame模型

om.*_*om. 60 java swing modal-dialog jframe

我创建了一个GUI,其中我使用了JFrame.我该如何制作Modal?

akf*_*akf 65

如果你想制作窗口模态,最好的办法是使用JDialog而不是JFrame.有关信息,请查看有关在Java 6中引入Modality API的详细信息.还有一个教程.

下面是一些示例代码,用于将显示JPanel panelJDialog其中是模态的到Frame parentFrame.除了构造函数之外,它遵循与打开a相同的模式JFrame.

final JDialog frame = new JDialog(parentFrame, frameTitle, true);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

编辑:更新了Modality API链接并添加了教程链接(向@spork点头了解).

  • 害怕这似乎是唯一的解决方案.我正在使用一些继承的代码来解决同样的问题.我有一个JFrame,我真的需要模态.做所有将其全部转换为JDialog的工作真的会很难看...... :-( (3认同)
  • 链接被打破:(仍然有人试图从这3年开始学习!在2013年尝试这个:http://docs.oracle.com/javase/tutorial/uiswing/misc/modality.html (2认同)

小智 15

您可以创建一个传递对父项的引用的类,JFrame并将其保存在JFrame变量中.然后,您可以锁定创建新框架的框架.

parentFrame.disable();

//Some actions

parentFrame.enable();
Run Code Online (Sandbox Code Playgroud)


小智 8

只需更换JFrameJDialog课堂

public class MyDialog extends JFrame // delete JFrame and write JDialog
Run Code Online (Sandbox Code Playgroud)

然后写入setModal(true);构造函数

之后,您将能够在netbeans中构建表单,并且表单将变为模态


Ric*_*ior 6

  1. 创建一个新的JPanel表单
  2. 添加所需的组件和代码

YourJPanelForm stuff = new YourJPanelForm();
JOptionPane.showMessageDialog(null,stuff,"Your title here bro",JOptionPane.PLAIN_MESSAGE);
Run Code Online (Sandbox Code Playgroud)


您的模态对话框等待...