我无法弄清楚如何调用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;
}
}