*Markus: Inhalt eines Textfeldes durch Events korrekt abfragen?

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.

--
http://www.apostrophitis.at
六 7東曲 人港ラ
  1. 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

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz
    1. 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

      --
      http://www.apostrophitis.at
      六 7東曲 人港ラ