Insert JDialog before frameview or main frame

后端 未结 3 1624
暗喜
暗喜 2021-01-27 10:08

i want to add Jdialog before frameview...my frameview consist of my main page of application. i just want to add Jdialog which get password from user and then ent

相关标签:
3条回答
  • 2021-01-27 10:14
    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);
    }
    

    That will show a dialog in front of your main panel and the user won't be able to use it until they login because its modal, and your LoginPanel can force the user to login by not offering any other option but Login, Signup, etc.

    0 讨论(0)
  • 2021-01-27 10:30

    You could use following constructors to make a JDialog parent-less

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

    Quick code sample :

    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 讨论(0)
  • 2021-01-27 10:32

    by reading

    1) How to use Top-Level Containers

    2) How to Make Dialogs with methods

    • setModal

    • ModalityTypes

    • toFront

    0 讨论(0)
提交回复
热议问题