2011-12-22 55 views
0

我想在框架视图之前添加Jdialog ...我的框架视图由我的主应用程序页面组成。我只想添加从用户那里获取密码的Jdialog,然后在主框架中输入。任何人都可以告诉我如何在java swing中实现这一点?在框架视图或主框架之前插入JDialog

回答

2
MyMainPanel mainPanel = new MyMainPanel(); 
LoginPanel loginPanel = new LoginPanel(); 

JFrame mainApp = new JFrame(); 
mainApp.add(mainPanel); 
mainApp.pack(); 
mainApp.setVisible(true); 

JDialog dialog = new JDialog(mainApp, true); 
dialog.add(loginPanel); 
dialog.setVisible(true); 

if(login.isAuthenticated()) { // after dialog is dismissed we can set the user 
    mainPanel.setAuthenticatedUser(loginPanel.getAuthenticatedUser()); 
} else { 
    System.exit(-1); 
} 

,将显示一个对话框您的主面板前面,用户将无法使用它,直到他们登录,因为它你的LoginPanel可以强制用户通过不提供任何其他选项,但登录,注册等登录。

1

你可以使用下面的构造函数,使一个JDialog家长少

JDialog d = new JDialog((Dialog)null); 

JDialog d = new JDialog((Window)null); 

JDialog d = new JDialog((Frame)null); 

快速的代码示例:

public class TestFrame extends JFrame{ 
    public TestFrame(){ 
     setSize(100,200); 
    } 

    public static void main(String[] args) { 
      //Using null constructor (Since JDK 6) 
     final JDialog loginDialog = new JDialog((Dialog)null); 
      //just a button for demo 
     JButton okButton = new JButton("Login"); 
     okButton.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent ae) { 
       TestFrame test = new TestFrame(); 
       test.setVisible(true); 
       loginDialog.dispose(); 
      } 
     }); 
     loginDialog.getContentPane().add(okButton); 
     loginDialog.pack(); 
     loginDialog.setVisible(true); 
    } 
} 
+0

只是告诉我,当我在我的swing应用程序中放下jdialog时需要更改哪些属性,以便它会首先打开获取密码,然后允许打开主框架。 – james 2011-12-22 16:05:24

+0

@james - 您需要使用我列出的其中一个构造函数构造您的JDialog。如果您仔细阅读了我提供的示例,则可以看到该对话框是作为运行应用程序('main'方法)的一部分而创建的。在对话框的“登录”操作中,我们将“主框架”设置为可见。 (13,14,15行)。 – 2011-12-22 16:57:51