[Java - AWT] Formularfelder abfragen ?

NudelMC

Well-known member
16 Juni 2006
178
5
Moin,

Ich bin mir sicher das es verdammt einfach sein muss, aber ich bekomms einfach net gebacken

Ich möchte auf ein von mir erstelltes Formularfeld zugreifen, sprich auslesen was drin steht, etwas anderes Reinschreiben.

Leider schaff ich das nicht ^^

private TextField textField1 = new TextField();

Wenn dann auf einen meiner buttons geklickt wurde soll der text aus textField1 ausgelesen werden.

Mein ActionListener sieht so aus:
PHP:
import java.awt.event.*;

public class meinActionListener implements ActionListener {

  public void actionPerformed(ActionEvent e) {

    String action = e.getActionCommand();


    if (action == "b1"){

      System.out.print("OMG B1 geklickt");
      // Hier soll dann der inhalt von textfield1 ausgegeben werden


    }

    if (action == "b2") System.out.print("WTF B2 geht auch");


Kann mir jemand ein tipp geben wie das geht ?
ich hatte es schon gelesen das es mit
Code:
String a;
System.out.println(textField1.gettext());
Gehen soll was allerdings nicht geklappt hat -.-

Need help
Nudel
 
Zuletzt bearbeitet:
AHHHAAAAA
Buttons.textField1.gettext();
Ist das Zauberwort !


Allerdings bekomm ich nun den Compiler Fehler:
non-static variable textField1 cannot be referenced from a static content


Keine Ahnung was er mir damit sagen möchte^^
Wäre echt super wenn mir da wer helfen könnte

Main Funktion (buttons.java)
PHP:
import java.awt.*;
import java.awt.event.*;


public class buttons extends Frame {
  // Anfang Variablen
  private Button button1 = new Button();
  private Button button2 = new Button();
  private meinActionListener b1 = new meinActionListener();
  private meinActionListener b2 = new meinActionListener();


  public TextField textField1 = new TextField();
  // Ende Variablen

  public buttons(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    button1.setBounds(24, 160, 75, 25);
    button1.setLabel("b1");
    cp.add(button1);
    this.button1.addActionListener(b1);

    button2.setBounds(104, 160, 75, 25);
    button2.setLabel("b2");
    cp.add(button2);
    this.button2.addActionListener(b2);


    textField1.setBounds(32, 88, 121, 24);
    textField1.setText("textField1");
    cp.add(textField1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  

  // Anfang Ereignisprozeduren


  // Ende Ereignisprozeduren


  public static void main(String[] args) {
    new buttons("buttons");
  }
}

Actionlistener meinActionListener:
PHP:
import java.awt.event.*;

public class meinActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    String action = e.getActionCommand();

    if (action == "b1"){

      System.out.print("OMG B1 geklickt");
      String t1;
      t1 = buttons.textField1.getText();
  
    }
    if (action == "b2") System.out.print("WTF B2 geht auch");

  }
}
 
das Problem ist das es in der Klassen meinActionListener das Textfeld auf das du versuchst zuzugreifen überhaupt nicht gibt

PHP:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class buttons extends Frame implements ActionListener {
    // Anfang Variablen
    private Button button1 = new Button();
    private Button button2 = new Button();


    public TextField textField1 = new TextField();
    // Ende Variablen

    public buttons(String title) {
        // Frame-Initialisierung
        super(title);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });
        int frameWidth = 300;
        int frameHeight = 300;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        Panel cp = new Panel(null);
        add(cp);
        // Anfang Komponenten

        button1.setBounds(24, 160, 75, 25);
        button1.setLabel("b1");
        cp.add(button1);
        this.button1.addActionListener(this);

        button2.setBounds(104, 160, 75, 25);
        button2.setLabel("b2");
        cp.add(button2);
        this.button2.addActionListener(this);


        textField1.setBounds(32, 88, 121, 24);
        textField1.setText("textField1");
        cp.add(textField1);
        // Ende Komponenten

        setResizable(false);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();

        if (action == "b1") {

            System.out.print("OMG B1 geklickt");
            String t1;
            t1 = textField1.getText();
            System.out.println(t1);

        }
        if (action == "b2") System.out.print("WTF B2 geht auch");

    }

    public static void main(String[] args) {
        new buttons("buttons");
    }
}

Zur Lösung: Die Klasse selber gibt den ActionListener und somit kannst du auch auf die Klasseneigenschaften zugreifen wahlweise könntest du deiner Extraklasse auch im Konstruktor das Textfeld übergeben das er überwachen soll.
 
VIELEN DANK !

Neue Frage, ich hab nun das komplette Formular ausgewertet, die inhalte werden in eine Text datei geschreiben, wenn neue inhalte eingefügt werden werden diese auto matisch an die letzte stelle der .txt geschrieben.

Soweit, so gut.

Nun hätte ich aber gerne nach jedem eigegebenen datensatz ein umbruch in der textdatei

\n gibt zwar ein umbruch in der ausgabe der daten, allerdings steht in der .txt nur ein viereck ( nicht vorhandenes zeichen)

gibts da ne möglcih keit in der.txt ein richtigen umbruch zu erzeugen ?

Danke
Nudel
 
mit was betrachtest du die Datein? Mit dem Windowseditor? Nimm mal Wordpad dann solltest du den Zeilenumbruch sehen. Meine Vermutung ist das das Carriage return fehlt was der Windowseditor zum anzeigen will also \r\n