如何在打开新JFrame时禁用主JFrame

时间:2010-06-12 15:04:48

标签: java swing jframe

现在示例我有一个主框架包含jtable显示所有客户信息,并且有一个创建按钮来打开一个允许用户创建新客户的新JFrame。我不希望用户可以打开多个创建框架。任何swing组件或API都可以做到这一点?或者如何禁用主框架?像JDialog这样的东西。

5 个答案:

答案 0 :(得分:18)

我认为在尝试打开新的jframe时,应该将此代码用于主jframe:

this.setEnabled(false);

答案 1 :(得分:11)

我建议您将新客户对话框设为模式JDialog,以便在应用中可见的时候不允许来自应用中其他对话框/框架的输入。有关详细信息,请查看modality tutorial

答案 2 :(得分:2)

对于迟到的回答感到抱歉,您是否考虑过Singleton设计模式?只要你想要这个类,它就会返回一个类的同一个实例。因此,如果用户想要一个框架来输入细节,那么只会打开一个框架(相同的实例)

它是这样的:

private static MySingleFrame instance = null; //global var

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance()
{

if(instance == null)
{
instance = new MySingleFrame();
}

//returns the same instance everytime MySingleFrame.getInstance() is called
return instance; 


}

答案 3 :(得分:1)

在第一帧上使用firstFrame.setVisible(false)。这会让它隐藏起来..

如果你想要一个更通用的方法,你可以在某个地方引用当前显示的帧,并在新帧请求显示时更改它

JFrame currentFrame;

void showRequest(JFrame frame)
{
  currentFrame.setVisible(false);
  currentFrame = frame;
  currentFrame.setVisible(true);
}

答案 4 :(得分:1)

您可以使用:

 private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) { 

             this.hide();
             new Frm_NewFormUI().setVisible(true);

 }