在Java弹出窗口中重用JTextField

时间:2012-06-11 01:50:20

标签: java swing popup

我正在构建一个使用多个弹出窗口的大型Java应用程序。其中一些窗口必须能够同时显示(例如,Google Earth和网络摄像头源的单独弹出窗口),但其中一些只能一次显示一个(例如,错误消息) 。第一种弹出窗口,网络摄像头类型,工作正常。但错误消息弹出窗口的作用类似于网络摄像头类型的弹出窗口(也就是说,它们会创建新的.class文件,并且可能会出现多个错误弹出窗口)。我该如何解决?我应该创建一个新的错误类吗?

此外,在其中一个网络摄像头类型的弹出窗口中,我有JTextFields,它读取用户名和密码。这个登录弹出窗口工作正常,但是如果我使用它一次,关闭它,再次使用它,在JTextFields上执行getText()会返回一个空字符串。我认为这个问题可能与上面的问题有关,但我不确定。

passwordAction.addActionListener(new ActionListener() {
            JFrame pwPop=new JFrame("Log in");
            JTextField unameField;
            JTextField pwField;
            public void actionPerformed(ActionEvent arg0) {
                pwPop.setBounds(250,200,300,150);
                JPanel pwPopPanel=new JPanel(new FlowLayout(FlowLayout.LEFT,10,10));
                pwPop.add(pwPopPanel);
                unameField=new JTextField();
                pwField=new JTextField();
                JButton logInButton=new JButton("Log in");
                JButton cancelButton=new JButton("Cancel");
                JLabel logInText=new JLabel("Username:");
                JLabel passwordText=new JLabel("Password:");
                JPanel buttonPanel=new JPanel(new FlowLayout(FlowLayout.CENTER,5,0));
                pwPopPanel.add(logInText);
                pwPopPanel.add(unameField);
                pwPopPanel.add(passwordText);
                pwPopPanel.add(pwField);
                buttonPanel.add(logInButton);
                buttonPanel.add(cancelButton);
                pwPopPanel.add(buttonPanel);
                logInButton.addActionListener(new ActionListener() {
                    JFrame logErrorFrame;
                    public void actionPerformed(ActionEvent arg0) {
                        if (doLogIn(unameField.getText(), pwField.getText(), "")) {
                            unameField.setText(null);
                            pwField.setText(null);
                            pwPop.setVisible(false);
                        }
                    }
                });
                pwPop.setVisible(true);
            }
        });

1 个答案:

答案 0 :(得分:0)

正如Andrew Thompson向我展示的那样,JOptionPane是我一直在寻找的解决方案。它能够创建您可能需要的几乎任何类型的弹出窗口。

JOptionPane Javadoc

Simple Dialog with JOptionPane