2016-11-18 1 views
-3

Mein Setter Testwert ist das bestandene Argument. Wenn ich versuche, es in die Getter-Methode zu bekommen, gibt es null zurück. Ich kann das nicht für mein Leben herausfinden. Hier ist mein vollständiger Code. Ich denke, dass es außerhalb des Methodenproblems liegen könnte.Warum gibt mein Getter Null zurück, wenn der Setter zurückgibt, was sein soll

package com.graphics.tyler; 

import java.awt.Color; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 

import java.awt.Font; 
import javax.swing.JButton; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JPasswordField; 
import javax.swing.JTextField; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class MainFrame extends JFrame { 

private JPanel contentPane; 
private JPasswordField txtPassword; 
private JTextField txtUsername; 
//private String email; 
private String test; 

public String getLoggedEmail() { 
    System.out.println("Get logged email is: " + test); 
    return this.test; 
} 

public void setLoggedEmail(String passedName) { 
    System.out.println("Passed argument is: " + passedName); 
    this.test = passedName; 
    System.out.println("Setter Username is: " + test); 
} 





/** 
* Create the frame. 
*/ 
public MainFrame() { 

    Driver drive = new Driver(); 

    setTitle("Graphics project"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(300, 30, 800, 600); 
    contentPane = new JPanel(); 
    contentPane.setBackground(Color.LIGHT_GRAY); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JLabel lblWelcomeToGraphics = new JLabel("Welcome to Graphics program"); 
    lblWelcomeToGraphics.setFont(new Font("Tahoma", Font.PLAIN, 27)); 
    lblWelcomeToGraphics.setBounds(208, 11, 360, 33); 
    contentPane.add(lblWelcomeToGraphics); 

    JButton btnExit = new JButton("Exit"); 
    btnExit.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent arg0) { 
      dispose(); 
     } 
    }); 
    btnExit.setBounds(703, 11, 71, 23); 
    contentPane.add(btnExit); 

    JLabel lblUsername = new JLabel("Username:"); 
    lblUsername.setFont(new Font("Tahoma", Font.PLAIN, 20)); 
    lblUsername.setBounds(60, 199, 97, 25); 
    contentPane.add(lblUsername); 

    JLabel lblPassword = new JLabel("Password:"); 
    lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 20)); 
    lblPassword.setBounds(66, 281, 91, 25); 
    contentPane.add(lblPassword); 

    txtPassword = new JPasswordField(); 
    txtPassword.setBounds(159, 284, 193, 20); 
    contentPane.add(txtPassword); 

    txtUsername = new JTextField(); 
    txtUsername.setBounds(159, 205, 193, 20); 
    contentPane.add(txtUsername); 
    txtUsername.setColumns(10); 

    JLabel lblDontHaveAn = new JLabel("Dont have an account? Sign Up!"); 
    lblDontHaveAn.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      UserCreation userCreate = new UserCreation(); 
      dispose(); 
      userCreate.setVisible(true); 
     } 
    }); 
    lblDontHaveAn.setBounds(601, 536, 193, 14); 
    contentPane.add(lblDontHaveAn); 

    JButton btnSignIn = new JButton("Sign In!"); 
    btnSignIn.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 

      String email = txtUsername.getText(); 
      String password = new String(txtPassword.getPassword()); 

      int password1 = password.hashCode(); 
      String password2 = Integer.toHexString(password1); 

      if(drive.signIn(email, password2)) { 

       System.out.println("Login Sucessful!"); 
       UserScreen nextScreen = null; 
       setLoggedEmail(email); 
       try { 
        nextScreen = new UserScreen(); 
       } catch (Exception e1) { 

        e1.printStackTrace(); 
       } 
       nextScreen.setVisible(true); 
       dispose(); 
      }else{ 
       JOptionPane.showMessageDialog(null, "Email or password is incorrect"); 
      } 

     } 
    }); 
    btnSignIn.setFont(new Font("Tahoma", Font.PLAIN, 14)); 
    btnSignIn.setBounds(208, 342, 97, 33); 
    contentPane.add(btnSignIn); 
} 
} 

Dies ist die Klasse, wo ich die Getter-Methode in rufen:

public UserScreen() throws Exception { 

    Driver drive = new Driver(); 
    MainFrame mainFrame = new MainFrame(); 

    drive.getUserInfo(mainFrame.getLoggedEmail()); 
    System.out.println("User screen email is: " + mainFrame.getLoggedEmail()); 
+1

Sie rufen es wahrscheinlich in der falschen Reihenfolge oder auf einer anderen Instanz an. – SLaks

+0

yep - Code wie gezeigt, sehe kein Problem, also Problem ist in dem Code, den Sie nicht zeigen ;-) –

+0

Zeigen Sie bitte ein [mcve]. –

Antwort

2

Ich glaube, Sie die Setter Getter-Methode zuerst und dann anrufen.

siehe unten Codebeispiel. Dies wird ausgeführt und gibt das richtige Ergebnis.

String test; 

public static void main(String []args){ 
    HelloWorld h = new HelloWorld(); 
    System.out.println("Hello World"); 
    h.setLoggedEmail("HI"); 
    h.getLoggedEmail(); 
} 


public void setLoggedEmail(String passedName) { 
    System.out.println("Passed argument is: " + passedName); 
    this.test = passedName; 
    System.out.println("Username is: " + test); 
} 


public String getLoggedEmail() { 
    System.out.println("Get logged email is: " + test); 
    return this.test; 
} 
3
public UserScreen() throws Exception { 

    Driver drive = new Driver(); 
    MainFrame mainFrame = new MainFrame(); // You instantiate new MainFrame 

    drive.getUserInfo(mainFrame.getLoggedEmail()); 
    System.out.println("User screen email is: " + mainFrame.getLoggedEmail()); 

instanziiert ein neues MainFrame das ist, warum Sie null auf mainFrame.getLoggedEmail() bekommen.

Sie müssen den Wert im selben Objekt, das Sie erstellt haben, festlegen. nicht die, die du neu erschaffen hast.

Verwandte Themen