Вставьте JDialog перед рамкой или основным кадром - PullRequest
0 голосов
/ 22 декабря 2011

Я хочу добавить Jdialog перед просмотром кадров ... Мой просмотр кадров состоит из моей главной страницы приложения.я просто хочу добавить Jdialog, который получает пароль от пользователя, а затем вводит в основной кадр.Кто-нибудь может сказать мне, как я могу достичь этого в Java Swing ??

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011
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 может заставить пользователя войти в систему, не предлагая никаких других опций, кроме Login, Регистрация и т. Д.

1 голос
/ 22 декабря 2011

Вы можете использовать следующие конструкторы для создания 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);
    }
}
1 голос
/ 22 декабря 2011

, читая

1) Как использовать Контейнеры верхнего уровня

2) Как сделать Диалоги с методами

  • setModal

  • ModalityTypes

  • toFront

...