【问题标题】:Insert JDialog before frameview or main frame在框架视图或主框架之前插入 JDialog
【发布时间】:2011-12-22 15:34:41
【问题描述】:

我想在 frameview 之前添加 Jdialog...我的 frameview 包含我的应用程序主页。我只想添加从用户那里获取密码然后进入主框架的 Jdialog。谁能告诉我如何在 java swing 中实现这一点??

【问题讨论】:

    标签: java swing jdialog


    【解决方案1】:
    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 可以通过不提供任何其他选项但登录来强制用户登录,注册等。

    【讨论】:

      【解决方案2】:

      通过阅读

      1) 如何使用Top-Level Containers

      2) 如何使用方法制作Dialogs

      • 设置模式

      • 模态类型

      • 到前面

      【讨论】:

        【解决方案3】:

        您可以使用以下构造函数来使 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);
            }
        }
        

        【讨论】:

        • 告诉我当我将 jdialog 放到我的 swing 应用程序中时我需要更改哪些属性,以便它首先打开获取密码然后允许打开主框架。
        • @james - 您需要使用我列出的构造函数之一来构造您的 JDialog。如果您通读我提供的示例,您会看到该对话框是作为运行应用程序的一部分首先创建的(main 方法)。在对话框的“登录”操作中,我们将“主框架”设置为可见。 (第 13、14、15 行)。
        猜你喜欢
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多