在frameview或主框架之前插入JDialog

时间:2011-12-22 15:34:41

标签: java swing jdialog

  

我想在frameview之前添加Jdialog ...我的frameview包含我的主要应用页面。我只想添加从用户获取密码的Jdialog,然后输入主框架。任何人都可以告诉我如何在java swing中实现这一点??

3 个答案:

答案 0 :(得分: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 :(得分:1)

阅读

1)如何使用Top-Level Containers

2)如何使用方法<{3}}

  • setModal

  • ModalityTypes

  • toFront

答案 2 :(得分: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);
    }
}