2011-12-22 29 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