Rod Vince Tolosa
Rod Vince Tolosa

Reputation: 21

Object Polymorphism

I have a project for school that has a logIn and shows a table using a method that is corresponding with the account but when I log in with the other accounts it also calls the main class' table please help me, Im a first year IT student and this is my first project any help will be much appreciated.

Here's the source code: The LogIn:

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);
    }
}

}

The tables class:

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();    
    }     
}

Upvotes: 2

Views: 57

Answers (1)

cbender
cbender

Reputation: 2251

It's because the method you're calling is static which doesn't work well with polymorphism. There's plenty of articles online and answers here on stackoverflow that discuss it (Few examples here, here, & here).

For a very simple example, try running this code and see what happens:

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");
    }
}

Upvotes: 1

Related Questions