Inhalt eines Textfeldes durch Events korrekt abfragen?
*Markus
- java
0 Biesterfeld0 *Markus
Hallo,
ich will schlicht und einfach nur den Inhalt eines Textfeldes ausgeben. Dabei bin ich folgendermaßen vorgegangen:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class EigenesFenster extends JFrame implements ActionListener {
private JButton button;
private JTextField j_textfield;
public EigenesFenster() {
button = new JButton("Ausgabebutton");
j_textfield = new JTextField();
}
public void buildGUI(EigenesFenster f) {
//JFrame.setDefaultLookAndFeelDecorated(true);
JFrame win = new JFrame("Eigenes Fenster");
win.setDefaultCloseOperation(EXIT_ON_CLOSE);
win.setResizable(false);
win.setLayout(new GridLayout(1, 3, 5, 5));
win.add(new JLabel("Eingabe: "));
win.add(j_textfield);
win.add(button);
button.addActionListener(f);
j_textfield.addActionListener(this);
win.setVisible(true);
win.pack();
}
public void actionPerformed(ActionEvent e) {
System.out.println(j_textfield.getText());
}
public static void main(String[] args) {
EigenesFenster fenster = new EigenesFenster();
fenster.buildGUI(fenster);
}
}
Ich habe allerdigs etwas Bauchschmerzen, was das Abfragen des Textfeldes betrifft. Wenn ich in der actionPerformed-Methode direkt auf j_textfield zugreife, würde das dann nicht das objektorientierte Konzept verletzen, auch wenn es die gleiche Klasse ist?
Mit Getter und Setter in diesem Fall zu arbeiten, würde hier vll. gut gehen, aber stelle ich mir vor ich hätte dutzende Textfelder, würde das den Code unnötig aufblähen.
Löst man Abfragen dieser Art normalerweise genau so, oder geht man hier etwas anders vor?
Markus.
Hej,
Ich habe allerdigs etwas Bauchschmerzen, was das Abfragen des Textfeldes betrifft. Wenn ich in der actionPerformed-Methode direkt auf j_textfield zugreife, würde das dann nicht das objektorientierte Konzept verletzen, auch wenn es die gleiche Klasse ist?
Nach meinem Verständnis überhaupt nicht. Das aus drei Gründen:
1.) j_textfield ist eine Klassenvariable und es obliegt der Klasse damit zu tun und zu lassen was sie will. Es wäre etwas anderes wenn du j_textfield selber herausrücken würdst.
2.) Getter- und Setter-Methoden sind ganz toll. Aber wenn man sie nicht sinnvoll einsetzt werden sie zur Belastung. In diesem Fall sehe ich keinen sinnvollen Einsatz, weil du a) sowieso nur einen String zurückgeben möchtest und b) dies auch innerhalb der Klasse tust.
3.) String ist immutable. Du würdest also den Inhalt des JTextFields nicht dadurch ändern können, dass du seinen Inhalt als String herausgibst. Damit ist die Kapselung bereits gewahrt.
Löst man Abfragen dieser Art normalerweise genau so, oder geht man hier etwas anders vor?
Das hängt davon ab, was du noch so vor hast. In dem konkreten Fall würde ich sagen, genau so.
Beste Grüße
Biesterfeld
Hallo,
Das hängt davon ab, was du noch so vor hast. In dem konkreten Fall würde ich sagen, genau so.
Ok, danke für die Info. Ich war mir zuerst nämlich nicht mehr so ganz sicher, ob die Kapselung noch gegeben gewesen wäre.
Markus