Java 显示用户名

Java 显示用户名,java,swing,Java,Swing,我使用netbeans创建了2个jframes。一个名为login,另一个名为home。 我在登录框中插入了一个文本字段来插入用户名。我还在主框架中放置了一个标签,以显示在登录框架文本字段中输入的用户名。为此,我创建了一个全局变量,从登录框的username textfield获取文本 public class Login extends javax.swing.JFrame { public static String user; user = txt_user.getText(); 然后

我使用netbeans创建了2个jframes。一个名为login,另一个名为home。 我在登录框中插入了一个文本字段来插入用户名。我还在主框架中放置了一个标签,以显示在登录框架文本字段中输入的用户名。为此,我创建了一个全局变量,从登录框的username textfield获取文本

public class Login extends javax.swing.JFrame {
public static String user;

user = txt_user.getText();
然后,我在home类中创建了login类的实例来调用这个变量,并将文本设置为我使用的标签

public Home() {
    initComponents();
    date();
    time();

    Login l = new Login();
    lbl_user.setText(l.user);
没有错误。但这对我不起作用。请帮我做这个。 我还想知道以下方法的返回类型是什么

public getuser(){
String u = txt_user.getText();
return;
}

所以在这件事上的任何帮助都是感激的。提前谢谢

在使用
静态变量时需要小心。在这种情况下,您不需要使用
静态
,在使用
JFrame
登录时,您可以使用:

Home() {
    initComponents();

    String login = JOptionPane.showInputDialog(this, "Input your name");
}

在使用
静态变量时,您需要小心。在这种情况下,您不需要使用
静态
,在使用
JFrame
登录时,您可以使用:

Home() {
    initComponents();

    String login = JOptionPane.showInputDialog(this, "Input your name");
}

在使用
静态变量时,您需要小心。在这种情况下,您不需要使用
静态
,在使用
JFrame
登录时,您可以使用:

Home() {
    initComponents();

    String login = JOptionPane.showInputDialog(this, "Input your name");
}

在使用
静态变量时,您需要小心。在这种情况下,您不需要使用
静态
,在使用
JFrame
登录时,您可以使用:

Home() {
    initComponents();

    String login = JOptionPane.showInputDialog(this, "Input your name");
}

学习手工编写用户界面的代码是非常值得的,这将使您更容易知道何时使用表单编辑器以及如何充分利用它们

您应该将转储到用户上的窗口数限制为一个活动窗口,并使用对话框向用户显示或提示更多信息。有关更多详细信息,请参阅

JFrame
不是一个阻塞窗口,也就是说,当您使其可见时,代码将继续执行,这意味着,在您的情况下,您将显示登录窗口,但用户在尝试设置标签文本之前没有时间输入任何内容

这就是模态对话框出现的地方

LoginPanel loginPane = new LoginPanel();
// This will wait here until the dialog is closed for some reason...
int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
// Then you can determine what you want to do in response to the
// closing of the dialog
if (result == JOptionPane.OK_OPTION) {
    label.setText("Welcome " + loginPane.getUsername());
}
可运行的示例

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {

            setLayout(new GridBagLayout());
            JLabel label = new JLabel("Unknown user");
            add(label);

            LoginPanel loginPane = new LoginPanel();
            int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
            if (result == JOptionPane.OK_OPTION) {
                label.setText("Welcome " + loginPane.getUsername());
            }

        }

    }

    public class LoginPanel extends JPanel {

        private JTextField userName;
        private JPasswordField password;

        public LoginPanel() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.WEST;

            add(new JLabel("Username: "), gbc);
            gbc.gridy++;
            add(new JLabel("Password: "), gbc);

            gbc.gridx++;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.EAST;

            userName = new JTextField(20);
            password = new JPasswordField(20);

            add(userName, gbc);
            gbc.gridy++;
            add(password, gbc);
        }

        public String getUsername() {
            return userName.getText();
        }

        public char[] getPassword() {
            return password.getPassword();
        }

    }

}

学习手工编写用户界面的代码是非常值得的,这将使您更容易知道何时使用表单编辑器以及如何充分利用它们

您应该将转储到用户上的窗口数限制为一个活动窗口,并使用对话框向用户显示或提示更多信息。有关更多详细信息,请参阅

JFrame
不是一个阻塞窗口,也就是说,当您使其可见时,代码将继续执行,这意味着,在您的情况下,您将显示登录窗口,但用户在尝试设置标签文本之前没有时间输入任何内容

这就是模态对话框出现的地方

LoginPanel loginPane = new LoginPanel();
// This will wait here until the dialog is closed for some reason...
int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
// Then you can determine what you want to do in response to the
// closing of the dialog
if (result == JOptionPane.OK_OPTION) {
    label.setText("Welcome " + loginPane.getUsername());
}
可运行的示例

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {

            setLayout(new GridBagLayout());
            JLabel label = new JLabel("Unknown user");
            add(label);

            LoginPanel loginPane = new LoginPanel();
            int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
            if (result == JOptionPane.OK_OPTION) {
                label.setText("Welcome " + loginPane.getUsername());
            }

        }

    }

    public class LoginPanel extends JPanel {

        private JTextField userName;
        private JPasswordField password;

        public LoginPanel() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.WEST;

            add(new JLabel("Username: "), gbc);
            gbc.gridy++;
            add(new JLabel("Password: "), gbc);

            gbc.gridx++;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.EAST;

            userName = new JTextField(20);
            password = new JPasswordField(20);

            add(userName, gbc);
            gbc.gridy++;
            add(password, gbc);
        }

        public String getUsername() {
            return userName.getText();
        }

        public char[] getPassword() {
            return password.getPassword();
        }

    }

}

学习手工编写用户界面的代码是非常值得的,这将使您更容易知道何时使用表单编辑器以及如何充分利用它们

您应该将转储到用户上的窗口数限制为一个活动窗口,并使用对话框向用户显示或提示更多信息。有关更多详细信息,请参阅

JFrame
不是一个阻塞窗口,也就是说,当您使其可见时,代码将继续执行,这意味着,在您的情况下,您将显示登录窗口,但用户在尝试设置标签文本之前没有时间输入任何内容

这就是模态对话框出现的地方

LoginPanel loginPane = new LoginPanel();
// This will wait here until the dialog is closed for some reason...
int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
// Then you can determine what you want to do in response to the
// closing of the dialog
if (result == JOptionPane.OK_OPTION) {
    label.setText("Welcome " + loginPane.getUsername());
}
可运行的示例

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {

            setLayout(new GridBagLayout());
            JLabel label = new JLabel("Unknown user");
            add(label);

            LoginPanel loginPane = new LoginPanel();
            int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
            if (result == JOptionPane.OK_OPTION) {
                label.setText("Welcome " + loginPane.getUsername());
            }

        }

    }

    public class LoginPanel extends JPanel {

        private JTextField userName;
        private JPasswordField password;

        public LoginPanel() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.WEST;

            add(new JLabel("Username: "), gbc);
            gbc.gridy++;
            add(new JLabel("Password: "), gbc);

            gbc.gridx++;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.EAST;

            userName = new JTextField(20);
            password = new JPasswordField(20);

            add(userName, gbc);
            gbc.gridy++;
            add(password, gbc);
        }

        public String getUsername() {
            return userName.getText();
        }

        public char[] getPassword() {
            return password.getPassword();
        }

    }

}

学习手工编写用户界面的代码是非常值得的,这将使您更容易知道何时使用表单编辑器以及如何充分利用它们

您应该将转储到用户上的窗口数限制为一个活动窗口,并使用对话框向用户显示或提示更多信息。有关更多详细信息,请参阅

JFrame
不是一个阻塞窗口,也就是说,当您使其可见时,代码将继续执行,这意味着,在您的情况下,您将显示登录窗口,但用户在尝试设置标签文本之前没有时间输入任何内容

这就是模态对话框出现的地方

LoginPanel loginPane = new LoginPanel();
// This will wait here until the dialog is closed for some reason...
int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
// Then you can determine what you want to do in response to the
// closing of the dialog
if (result == JOptionPane.OK_OPTION) {
    label.setText("Welcome " + loginPane.getUsername());
}
可运行的示例

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {

            setLayout(new GridBagLayout());
            JLabel label = new JLabel("Unknown user");
            add(label);

            LoginPanel loginPane = new LoginPanel();
            int result = JOptionPane.showConfirmDialog(this, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
            if (result == JOptionPane.OK_OPTION) {
                label.setText("Welcome " + loginPane.getUsername());
            }

        }

    }

    public class LoginPanel extends JPanel {

        private JTextField userName;
        private JPasswordField password;

        public LoginPanel() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.WEST;

            add(new JLabel("Username: "), gbc);
            gbc.gridy++;
            add(new JLabel("Password: "), gbc);

            gbc.gridx++;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.EAST;

            userName = new JTextField(20);
            password = new JPasswordField(20);

            add(userName, gbc);
            gbc.gridy++;
            add(password, gbc);
        }

        public String getUsername() {
            return userName.getText();
        }

        public char[] getPassword() {
            return password.getPassword();
        }

    }

}

初见;第二,我认为你实际上想要一个模态对话框,看;第三,考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应谢谢,我很感激。下次我会记住这一点。我们甚至不要开始第一次见面;第二,我认为你实际上想要一个模态对话框,看;第三,考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应谢谢,我很感激。下次我会记住这一点。我们甚至不要开始第一次见面;第二,我认为你实际上想要一个模态对话框,看;第三,考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应谢谢,我很感激。下次我会记住这一点。我们甚至不要开始第一次见面;第二,我认为你实际上想要一个模态对话框,看;第三,考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应谢谢,我很感激。下次我会记住这一点。我们甚至不要开始讨论这个问题