Variable aus einer Klasse in einer anderen Klasse nutzen

Lia

Bekanntes Mitglied
Hi ihr Lieben,

ich bin noch total neu in dem Bereich Java.
Ich habe zwei Klassen, eine wo ich alles mit der Benutzeroberfläche drin hab KlasseA ( Fenster Button etc.) und eine KlasseB wo ich Informationen auslese..
Ich habe Variablen in der KlasseB welche ich auch in der KlasseA nutzen möchte. Weiss aber nicht wie ich die Variable nutzen kann. Hat es was mit statischen Variablen zu tun?

Ich habe nämlich eine Variable "Name" (in KlasseB) und würde diesen gerne durch einen Button Click auslesen lassen welcher sich in der KlasseA befindet.

Ich hoffe das klingt nicht verwirrend was ich hier geschrieben habe :-DD
 
@Javinner
Klasse B:
Java:
         if(rs.next()){
                             String name = rs.getString("name");
                                String nachname = rs.getString("nachname");
                               System.out.print("Name: " + name);
                              System.out.print(" Nachname: " + nachname);
Klasse A:
Java:
  ActionListener al = new ActionListener() {

   public void actionPerformed(ActionEvent e) {
       
       laborversuch.
       button.setActionCommand("clicked");
         //JOptionPane.showMessageDialog(null,txtfldVorname.getText());
         JOptionPane.showMessageDialog(null, laborversuch.name);

ich ziehe mir was aus einer Datenbank möchte das in einer Messagebox anzeigen was in der Variable "name" steht (beinhaltet einen Namen aus der Tabelle). Ich hoffe es ist verständlich 🙁
 
@Lia
Wenn ich dich richtig verstanden habe, willst du eine Eingabe auslesen und wo anders einfügen.
Wenn dem so ist, dann musst du hier nur den Wert auslesen und wo anders einfügen. Also gibt es da Methoden wie getText() und setText(). Schau mal hier

edit:
JOptionPane bietet da mit setMessage(Object newMessage) doch genau das Richtige für den Fall
Java:
public void setMessage(Object newMessage)
Sets the option pane's message-object.
Parameters:
newMessage - the Object to display
 
Zuletzt bearbeitet:
@Javinner
also der Name wird vom Nutzer in einem Textfield eingegeben , diese wird in einer Datenbank hinterlegt und mit dem ButtonClick wollte ich quasi die Info auslesen und in einer Messagebox ausgeben.
 
@Lia
Auch wenn Android, so ist doch die Vorgehensweise gleich:
Java:
public class MainActivity extends Activity
{

  
    TextView textView; //Ausgabe Username
    EditText editText; //Eingabe Username
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.et_name_input);
        textView = (TextView) findViewById(R.id.tw_user_name);
        Button button = (Button) findViewById(R.id.btn_start);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                textView.setText(editText.getText()); //<--- hier entscheidend
            }
        });

    }
}
Also schau nach, welche Klassen du benutzt und welche Methoden diese dir zu Verfügung stellen. Hier gehe ich den Weg, die Eingabe des Textes als Ausgabe zu setzen und um die Einfachheit beizubehalten verzichte ich auf Unnötiges.
 

Anhänge

  • test.PNG
    test.PNG
    180,1 KB · Aufrufe: 35
Ich habe nämlich eine Variable "Name" (in KlasseB) und würde diesen gerne durch einen Button Click auslesen lassen welcher sich in der KlasseA befindet.
Java:
if(rs.next()){
     String name = rs.getString("name");// <=== Achtung lokale Variable
     //...
} // <= die Gültigkeit endet hier!

Du zeigst nicht, wie es mit der Variablen "name" weitergeht. Solltest du sie aus der Funktion, in der sie deklariert und zugewiesen wird als Rückgabewert return name; verwenden, dann funktioniert das, ansonsten ist sie nach dem Schließen der geschweiften Klammer ungültig und kann nicht mehr verwendet werden.

Ansonsten kannst du folgendes machen:
Java:
public class B {
     private String name;

     // Über die Funktion "getName()" kannst du auf die Instanzvariable "name" zugreifen
     public String getName() { 
          return this.name;
     }

     private void readNamefromDB() {
          //...
          if(rs.next()){
               this.name = rs.getString("name"); 
          //...
     }
}
 

Zurück
Oben