S
spitfire78
Gast
Hallo Community,
ich bin noch Anfänger und habe ein kleines Verständnisproblem.
Folgender Code:
Mir geht´s um die Zeilen 58 - 65. Dazu habe ich folgende Frage: In Zeile 59 adde ich einen ActionListener für button1. Dazu schreibe ich: button1.addActionListener(this). In Zeile 64 adde ich einen DocumentListener für tf1. Dazu schreibe ich: tf1.getDocument().addDocumentListener(this).
Wozu brauche ich hier getDocument()? Intuitiv hätte ich geschrieben tf1.addDocumentListener(this).
Ich würde mich über eine kurze Hilfestellung freuen.
spitfire78
ich bin noch Anfänger und habe ein kleines Verständnisproblem.
Folgender Code:
Java:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class GuiComponents extends JFrame implements ActionListener, ItemListener, DocumentListener {
JFrame frame1;
JButton button1;
JButton button2;
JButton button3;
JCheckBox checkbox1;
JRadioButton radio1;
JRadioButton radio2;
ButtonGroup group1;
JLabel anzeige1;
JTextField tf1;
JTextArea ta1;
//Konstruktor
public GuiComponents () {
//Frame erzeugen und anzeigen, Größe festlegen
frame1 = new JFrame ("Rahmen");
frame1.setLayout(new FlowLayout());
frame1.setSize(500, 500);
//Komponenten erzeugen
button1 = new JButton ("Schalter 1");
button2 = new JButton ("Schalter 2");
button3 = new JButton ("Schalter 3");
checkbox1 = new JCheckBox("Check1", true);
radio1 = new JRadioButton("Radio1");
radio2 = new JRadioButton("Radio2");
group1 = new ButtonGroup();
anzeige1= new JLabel("Anzeige");
tf1 = new JTextField("Hallo Welt");
ta1 = new JTextArea("Hallo Welt");
//Radiobuttons gruppieren
group1.add(radio1);
group1.add(radio2);
//Komponenten dem Frame zuordnen
frame1.add(button1);
frame1.add(button2);
frame1.add(button3);
frame1.add(checkbox1);
frame1.add(radio1);
frame1.add(radio2);
frame1.add(anzeige1);
frame1.add(tf1);
frame1.add(ta1);
//Komponenten mit Listener versehen
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
radio1.addItemListener(this);
radio2.addItemListener(this);
tf1.getDocument().addDocumentListener(this);
ta1.getDocument().addDocumentListener(this);
/*
WindowListener zum Fenster schließen.
Stichwort: anonyme Klassen
siehe: [url=http://www.dpunkt.de/java/Die_Sprache_Java/Objektorientierte_Programmierung_mit_Java/64.html]Anonyme Klassen[/url]
Hinter Bezeichner und Argumentenliste kann hier noch ei Klassenrumpf folgen. Ein Bezeichner ist nicht notwendig.
*/
WindowAdapter wa = new WindowAdapter() {
public void windowClosing (WindowEvent event) {
System.exit(0);
}
};
frame1.addWindowListener(wa);
/*
alternative Schreibweise
frame1.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent event) {
System.exit(0);
}
});
*/
//Frame anzeigen
frame1.setVisible(true);
}
/*
implementieren der actionPerformed Methode: Diese dient zum Event-Handling
des ActionListener.
mit event.getSource() wird der zugehörige Button zurückgeliefert und im
if-Statement wird geprüft, ob dieser Button geklickt wurde.
*/
public void actionPerformed (ActionEvent event) {
if (event.getSource() == button1) {
anzeige1.setText(event.getActionCommand());
System.out.println(anzeige1.getText());
} else if (event.getSource() == button2) {
System.out.println(event.getActionCommand());
} else if (event.getSource() == button3) {
System.out.println(event.getActionCommand());
}
}
//implementieren des Item-Listeners für Radio-Buttons
public void itemStateChanged (ItemEvent event) {
if (event.getSource() == radio1) {
System.out.println("Radio 1 ausgewählt" + event.getStateChange());
} else if (event.getSource() == radio2) {
System.out.println("Radio 2 ausgewählt" + event.getStateChange());
}
}
}
Mir geht´s um die Zeilen 58 - 65. Dazu habe ich folgende Frage: In Zeile 59 adde ich einen ActionListener für button1. Dazu schreibe ich: button1.addActionListener(this). In Zeile 64 adde ich einen DocumentListener für tf1. Dazu schreibe ich: tf1.getDocument().addDocumentListener(this).
Wozu brauche ich hier getDocument()? Intuitiv hätte ich geschrieben tf1.addDocumentListener(this).
Ich würde mich über eine kurze Hilfestellung freuen.
spitfire78