我有一个学校项目,它有一个logIn,并使用与帐户对应的方法显示一个表,但当我使用其他帐户登录时,它也会调用主类表。请帮帮我,我是一名it一年级学生,这是我的第一个项目。如果有任何帮助,我们将不胜感激。
以下是源代码:登录:
public class LogIn implements ActionListener{
//GUI
static JLabel userLabel;
static JTextField userText;
static JLabel passwordLabel;
static JPasswordField passwordText;
static JButton loginButton ;
static JLabel success;
public static void main(String[]args) {
JFrame frame = new JFrame("Activities/Task Manager Log in");
frame.setSize(350, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel();
frame.add(panel);
placeComponents(panel);
frame.setVisible(true);
}
private static void placeComponents(JPanel panel) {
panel.setLayout(null);
userLabel = new JLabel("User");
userLabel.setBounds(10,30,80,25);
panel.add(userLabel);
userText = new JTextField(20);
userText.setBounds(100,30,165,25);
panel.add(userText);
passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10,70,80,25);
panel.add(passwordLabel);
passwordText = new JPasswordField(20);
passwordText.setBounds(100,70,165,25);
panel.add(passwordText);
loginButton = new JButton("Login");
loginButton.setBounds(10, 110, 80, 25);
loginButton.addActionListener(new LogIn());
panel.add(loginButton);
success = new JLabel("");
success.setBounds(10, 140, 300, 25);
panel.add(success);
}
@Override
public void actionPerformed(ActionEvent arg0) {
String user = userText.getText();
String password = passwordText.getText();
if (user.equals("Rod Vince Tolosa")&& password.equals("123456") ) {
success.setText("Login Successful!");
Tolosa.showtable();
}
else if (user.equals("Paul Naethan Bustillo")&& password.equals("654321") ) {
success.setText("Login Successful!");
Bustillo.showtable();
}
else if (user.equals("Christia Anna Sarguet")&& password.equals("123123") ) {
success.setText("Login Successful!");
Sarguet.showtable();
}
else {
JOptionPane.showMessageDialog(null, "Invalid Login Details");
userText.setText(null);
passwordText.setText(null);
}
}
}
表格类:
public class Tolosa {
public JFrame Tasks;
Tolosa(){
Tasks=new JFrame("Rod Vince Tolosa Tasks/Activities");
String column[]={"SUBJECT","ACTIVITY","DATE","TIME"};
String data[][]={{"STS","Film Review","05/21/21","12:00 AM"},
{"Entrepreneurial Mind","Final Paper","05/15/21","4:30 PM"},
{"Purposive Communication","Task 8","05/27/21","11:59 PM"},
{"GEPC","Poster Project","06/03/21","12:00 AM"},
{"InfoMan","Project Database","06/08/21","1:30 PM"},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}};
JTable jt=new JTable(data,column);
jt.setBounds(30,40,200,300);
JScrollPane sp=new JScrollPane(jt);
Tasks.add(sp);
Tasks.setSize(650,400);
Tasks.setVisible(true);
Tasks.setLocationRelativeTo(null);
}
public static void showtable() {
new Tolosa();
}
}
//Inheritance
class Bustillo extends Tolosa{
public JFrame Tasks;
Bustillo(){
Tasks=new JFrame("Paul Naethan Bustillo Tasks/Activities");
String column[]={"COURSE SUBJECT","ACTIVITY","DEADLINE","TIME"};
String data[][]={ {"Probability and Statistics","Final Quiz","06/3/21","4:30 PM"},
{"Entrepreneurial Mind","Final Paper","05/15/21","4:30 PM"},
{"Purposive Communication","Task 7","05/19/21","11:59 PM"},
{"GEPC","Poster Project","06/03/21","12:00 AM"},
{"Information Management","Final Project Presentation","06/08/21","1:30 PM"},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}};
JTable jt=new JTable(data,column);
jt.setBounds(30,40,200,300);
JScrollPane sp=new JScrollPane(jt);
Tasks.add(sp);
Tasks.setSize(650,400);
Tasks.setVisible(true);
Tasks.setLocationRelativeTo(null);
}
//Polymorphism
public static void showtable() {
new Bustillo();
}
}
这是因为您调用的方法是static
,它不能很好地处理多态性。网上有很多关于stackoverflow的文章和答案(这里、这里和这里的例子很少(。
举一个非常简单的例子,试着运行这个代码,看看会发生什么:
public class App {
public static void main(String[] args) throws Exception {
new B();
}
}
class A {
public A() {
hi();
}
public static void hi() {
System.out.println("hi");
}
}
class B extends A {
public B() {
hi();
}
public static void hi() {
System.out.println("hello");
}
}