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