如何在其他Jframe中调用已经实现的类的类



我无法弄清楚如何调用login.java(是jframe)中已经实现的类(也是jframe)。

这是我在login.java中要求的类。

public class Session {
    public Session(String sUsername, String sPassword, String sName, String sAge, String sSex)
    {
    String Username = sUser;
    String Password = sPassword;
    String Name = sName;
    String Age = sAge;
    String Sex = sSex;
    }
}

这是登录。Java代码实现类。

if(rs.next()) {
 Username=rs.getString("Usernames");
 Password=rs.getString("Passwords");
 Name=rs.getString("Names");
 Age=rs.getString("Ages");
 Sex=rs.getString("Sexes");
 Session S1 = new Session(Username, Password, Name, Age, Sex);
}

在欢迎。

S1.Name

S1.Username

如果S1会话类实例是登录(扩展Jframe)类的私人成员,则没有常规方法可以从登录类外部访问S1成员。您需要使用公共访问者方法(设置和Geters)。

如果您想从欢迎类访问登录的S1对象,则需要传递对欢迎构造函数的参考,并且/或登录的S1成员需要具有公众的可见性。

Welcome welcome = new Welcome(login.getS1())

请记住,在Java中组织了这样的代码(在会话类中的jframe,公共字段而不是getters)被认为是不好的实践。这是最简单的示例。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class Test {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            final Wellcome app = new Wellcome();
            app.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            app.setVisible(true);
        });
    }
}
class Wellcome extends JFrame {
    public Wellcome() throws HeadlessException {
        setSize(300, 300);
        final JButton loginBtn = new JButton();
        loginBtn.setAction(new AbstractAction("Login") {
            @Override
            public void actionPerformed(ActionEvent e) {
                final Login login = new Login();
                final Session session = login.logIn();
                // use you session as you wish
                System.out.println(session.username);
            }
        });
        final JPanel contentPane = new JPanel();
        contentPane.add(loginBtn);
        setContentPane(contentPane);
    }
};
class Login extends JDialog {
    private final JTextField username;
    private final JTextField password;
    private final JTextField age;
    public Login() {
        setModalityType(ModalityType.APPLICATION_MODAL);
        setLayout(new GridLayout(5, 2));
        username = addField("User", new JTextField());
        password = addField("Password", new JPasswordField());
        age = addField("Age", new JTextField());
        pack();
    }
    private JTextField addField(String name, JTextField field) {
        add(new JLabel(name));
        add(field);
        return field;
    }
    public Session logIn() {
        setVisible(true);
        return new Session(username.getText(), password.getText(), age.getText());
    }
};
class Session {
    public final String username;
    public final String password;
    public final String age;

    public Session(String username, String password, String age) {
        this.username = username;
        this.password = password;
        this.age = age;
    }
}

最新更新