String übergabe an andere Klasse

JHounter

Grünschnabel
Huhu,

wenn ich von Klasse A nach Klasse B einen String übergeben will, mach ich das doch über Schnittstellen, oder? Was mache ich denn hier falsch?

Schnittstelle benutzerdaten:
PHP:
package onlineapplication;

public interface benutzerdaten {
    
   public void setUserName(String usr);
   public String getUserName();
   
}

Klasse 1 (ausschnitt):
PHP:
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {                                        

         // Neues Fenster erstellen,öffnen und String übergeben
         Hidden bereich = new Hidden();
         bereich.setUserName(name);
         bereich.setVisible(true);
         
}

    public void setUserName(String usr)
    {
        usr = usernames[y];
    }


   public String getUserName()
   {
        return(test2);
   }

Klasse B (Ausschnitt):
PHP:
     public String getUserName()
     {
        return(name);
     }

    public void setUserName(String lol)
    {
         // Username soll nicht neu gesetzt werden
    }

    private void button1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
          getUserName();
          System.out.println(name);
           System.out.println();
        // label2.setText(name);
}

Ich bekomme immer eine leere Ausgabe, sprich name ist leer ("")
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
Hallo,

ich kenne deine ganzen Klassen nicht, aber ich muss sage, das was ich hier sehe sieht etwas seltsam aus.

So sieht das mit Gettern und Settern eigentlich aus.

Java:
public class GetterSetterExample{

private String name = null;

public GetterSetterExample(String s){

setName(s);
System.out.println(getName());

}

public void setName(String name){

this.name=name;

}

public String getName(){

return name;

}

public static void main(String[] args){

new GetterSetterExample("Meier");

} 

}


MFG

Sascha
 
Zuletzt bearbeitet von einem Moderator:

JHounter

Grünschnabel
huhu,

danke für die hilfe.

Ich habe jetzt hinbekommen in der Klasse A zu setten und zu getten.
Aber wie bekomme ich den String jetzt in Klasse B zu sehen?

PHP:
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {                                        

   getUserName();
   System.out.println(usr);
   
   }   

public String getUserName(){
   return usr;
} 


    public void setUserName(String usr)
    {
        this.usr = usr;
    }

Ich habe ja den String in Klasse A gesetzt, aber wie rufe ich den nun in B auf?
 

zeja

Erfahrenes Mitglied
z.b. in dem du im Konstruktor von B ein Objekt von A übergibst.

Java:
public class B {
private A a;
public B(A a){
this.a = a;
a.getUserName();
}
}
 

JHounter

Grünschnabel
Irgendwie will das nicht funktionieren.

Geht das nicht einfach mit:

in Klasse B:
Code:
  public KlasseB()
    {
       String username = "";
       username = getUserName();
  // bzw. username = KlasseA.getUserName();
   }
 

zeja

Erfahrenes Mitglied
Halte dich doch an mein Beispiel! Du mußt im Konstruktor Klasse A als Parameter angeben und entsprechend beim erstellen eines Objektes von B ein Objekt vom Typ A übergeben.

Ansonsten schau mal in "Java ist auch eine Insel" rein. Ich denke du mußt da noch einiges grundlegendes lernen.
 

JHounter

Grünschnabel
symbol : constructor B()
location: class testapplication.B
new b().setVisible(true);
1 error
BUILD FAILED (total time: 0 seconds)

wenn ich den Konstrukor wie in deinem Beispiel benutze

Code:
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new B().setVisible(true);
            }
        });

non-static variable a cannot be referenced from a static context
 

zeja

Erfahrenes Mitglied
So noch ein letzter Versuch:
Java:
public class B {
   private A a;
   public B(A a){
      this.a = a;
      System.out.println(a.getUserName());
   }
}

Java:
public class A {

   private String userName;

   public String getUserName(){
      return userName;
   }

   public void setUserName(String userName){
      this.userName = userName;
   }

   public static void main(String [] args){
      A a = new A();
      a.setUserName("zeja");
      B b = new B(a);
   }

}

Objekt b ließt im Konstruktor den Username von A aus und gibt diesen auf der Konsole aus.