Was macht e.getSource() ?

melaniemueller

Aktives Mitglied
Guten Abend 😊
Mein neues Thema: Die ersten grafischen Oberflächen mit AWT und Swing erstellen.
Bisher habe ich ein Fenster erstellt, mit einem Button und auch Listener kamen nun dazu. Jetzt gibts in meinem Studienheft ein Beispiel welches ich nicht so ganz nachvollziehen kann und ich es einfach gerne verstehen möchte.
Hauptsächlich scheitert mein Verständnis an e.getSource() . Was genau macht diese Methode?
Ich erkläre mal eben das Beispiel:

Es soll ein Fenster erscheinen bei dem man eingibt wer die Welt grüßen möchte. Dies gibt man ein und anschließend wird der Text den man eingegeben hat verwendet für das 2. Fenster, dass sich anschließend öffnet mit dem Text "Hallo Welt es grüßt dich ...." mit einem "Beenden" Button. Das Anlegen der Fenster etc. habe ich alles verstanden, nur wie genau der eingegebene Text nun in das Fenster gelangt, kann ich nicht nachvollziehen. Ich hab den fertigen Code, ich bräuchte nur jemanden der mir die Schritte nochmal ein wenig verständlicher als in meinem Heft erklären könnte.

Es gibt insgesamt 4 Klassen, aber für mein Problem sind nur 2 relevant daher teile ich nur die 2.

Java:
package de.fernschulen.j09d_03;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

//das Swing-Fenster
//die Klasse erbt von der Swing-Klasse JFrame
//JFrame bildet ein Anwendungsfenster ab
public class HalloWeltGUI extends JFrame{

    //die ID wurde automatisch über Eclipse eingefügt
    private static final long serialVersionUID = 8235308007913310676L;
    
    //die Komponenten sind jetzt private Instanzvariablen
    private JLabel ausgabe, ausgabe2;
    private JButton schaltflaeche;

    //der Konstruktor
    //er ruft den Konstruktor der Basisklasse auf
    //übergibt den Titel des Fensters
    //erzeugt die Komponenten und setzt weitere Eigenschaften des Fensters
    public HalloWeltGUI(String fenstertitel) {
        super(fenstertitel);
        //ein neues Label erzeugen
        ausgabe = new JLabel("Hallo Welt");
        //ein weiteres Label erzeugen
        ausgabe2 = new JLabel();
        //eine Schaltfläche erzeugen
        schaltflaeche = new JButton("Beenden");
        //ein Layout anwenden
        setLayout(new FlowLayout());
        //die Komponenten hinzufügen
        add(ausgabe);
        add(ausgabe2);
        add(schaltflaeche);
        //die Verbindung zwischen der Schaltfläche und dem Listener herstellen
        //übergeben wird eine neue Instanz unserer eigenen Listener-Klasse
        schaltflaeche.addActionListener(new SchaltflaecheListener());
        //die Verbindung zwischen dem Fenster und dem Listener herstellen
        //übergeben wird eine neue Instanz unserer Listener-Klasse für die Fenster-Ereignisse
        this.addWindowListener(new FensterListener());
        //das Fenster packen
        pack();
        //das Verhalten beim Schließen setzen
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //das Fenster sichtbar machen
        setVisible(true);
    }
    
    //die Methode setzt den Text im zweiten Label
    public void setAusgabe2Text(String text) {
        ausgabe2.setText("Es grüßt Dich " + text);
        //das Fenster neu packen
        pack();
    }
}

Die Klasse für den Fenster Listener:

Java:
package de.fernschulen.j09d_03;

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JOptionPane;

public class FensterListener implements WindowListener{

    //die "leeren" Methoden dürfen nicht gelöscht werden!!
    @Override
    public void windowActivated(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowClosed(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowClosing(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowIconified(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowOpened(WindowEvent e) {
        //für den Zugriff auf die Instanz der Klasse mit der grafischen Oberfläche
        HalloWeltGUI temp;
        //für die Eingabe
        String eingabe;
        //die Eingabe einlesen
        eingabe = JOptionPane.showInputDialog("Wer will die Welt grüßen?");
        //temp erhält die Referenz des Aufrufers
        //das Ergebnis von e.getSource() muss in den passenden Typen umgewandelt werden
        temp = (HalloWeltGUI)e.getSource();
        //die Methode setAusgabe2Text über temp aufrufen
        temp.setAusgabe2Text(eingabe);
    }
}
 
K

kneitzel

Gast
Bei dem WindowEvent gibt das getSource() zurück, welches Element für das Event verantwortlich ist.

Bei dem windowOpened wäre es also das Fenster, das geöffnet worden ist.

Und das ist dann die Instanz von HelloWeltGui, das du geöffnet hast (in deinem konkreten Fall).
 

Jw456

Top Contributor
und mit
temp.setAusgabe2Text(eingabe);
wird die setAusgabe2Text Methode der HelloWeltGui Klasse aufgerufen.
temp zeigt ja auf die Instanz dieser Klasse.

Ihr wird auch der eingegene Sting übergeben der dann in der ausgabe2 gesetzt und angezeigt wird.

PS mit pack(); wird nicht nur die grösse des Fensters angepast sondern bei bedarf auch neu gezeichnet.
du hast ja gerade den zweiten text gesetz und jetzt wird er beim neu zeichen angezeigt.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
Furtano AWT GridBagLayout macht mir Sorgen AWT, Swing, JavaFX & SWT 3
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
T JLabel macht sich selbstständig? o.0 AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S Swing Swing macht sehr seltsame Zeichnungen. AWT, Swing, JavaFX & SWT 13
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
R wie macht am besten ein GUI ? AWT, Swing, JavaFX & SWT 21
hdi Swing JFrame#setCursor macht Zicken AWT, Swing, JavaFX & SWT 10
L Swing JButton macht Eventhandling kaputt AWT, Swing, JavaFX & SWT 3
D GridBagLayout macht nicht das was es soll AWT, Swing, JavaFX & SWT 12
J Swing Formulare in Swing - wie macht ihr das? AWT, Swing, JavaFX & SWT 7
T JTable / RowSorter macht große Probleme AWT, Swing, JavaFX & SWT 2
V Swing Mein swingender Pokertisch macht Probleme AWT, Swing, JavaFX & SWT 10
G Bildervorschau macht Probleme AWT, Swing, JavaFX & SWT 22
N SWT Text pack() macht Text zu klein AWT, Swing, JavaFX & SWT 2
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
N Gridlayout macht Probleme AWT, Swing, JavaFX & SWT 3
G jpanel macht kein repaint AWT, Swing, JavaFX & SWT 2
F Thread macht keine Pause AWT, Swing, JavaFX & SWT 22
W Wie macht man in Swing eigentlich nen Benutzereingabedialog? AWT, Swing, JavaFX & SWT 7
T JTree macht mich wahnsinnig (selektion) AWT, Swing, JavaFX & SWT 2
hdi meine paint-methode macht faxen? AWT, Swing, JavaFX & SWT 21
W Wie macht man so nen Settings Dialog AWT, Swing, JavaFX & SWT 2
P JTree macht mich fertig AWT, Swing, JavaFX & SWT 3
E Hilfe - setVisible macht was es will AWT, Swing, JavaFX & SWT 7
F Paint-Methode Überschreiben macht Refresh-Fehler ? AWT, Swing, JavaFX & SWT 8
G KeyListener Problem in GUI (macht einfach nichts) AWT, Swing, JavaFX & SWT 2
M JComboBox macht nicht immer was sie soll AWT, Swing, JavaFX & SWT 5
F JTable mit Checkbox macht Probleme AWT, Swing, JavaFX & SWT 4
F Look and Feel zur Laufzeit ändern macht Probleme AWT, Swing, JavaFX & SWT 3
A Was macht super? AWT, Swing, JavaFX & SWT 10
C Was genau macht getValueIsAdjusting() ? AWT, Swing, JavaFX & SWT 4
P getSource() == open AWT, Swing, JavaFX & SWT 3
Madlip SWT Wie bekomme ich e.getSource xxx AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4
tuttle64 getSource() unklar AWT, Swing, JavaFX & SWT 4
L ActionListener eGUI...getSource().... AWT, Swing, JavaFX & SWT 10
I ? getSource() ? AWT, Swing, JavaFX & SWT 8
B ActionListener/JMenuItem/getSource() . AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben