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.
Die Klasse für den Fenster Listener:
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);
}
}