Arbeiten mit 2 TextFeldern gleichzeitig

Status
Nicht offen für weitere Antworten.
D

DerVerwirrte

Gast
Hallo!

Ich muss für den Informatikunterricht einen Umrechner Fahrenheit-Celsius schreiben. Wenn man in ein TextFeld(°C) einen Wert eingibt, soll im anderen (F) gleich der Wert angezeigt werden, ohne vorher irgendeinen Button zu drücken.

Mein Problem besteht im ActionListener. Ich weiß nicht wie ich es ausdrücken soll, wenn eine Aktion(Berchnung und dann Darstellung im TF) nur durch Eingabe im TextFeld ausgelöst werden kann.

Hier ist der Quelltext, die Problematischen Stellen sind markiert
Code:
import java.awt.*;

public class Aufg1 extends Frame
{
  Panel pnlLeft=new Panel(new FlowLayout(FlowLayout.LEFT));
  Panel pnlRight=new Panel(new FlowLayout(FlowLayout.RIGHT));

  Label lblCelsius=new Label("Celsius: ");
  TextField tfCelsius=new TextField(10);
  
  Label lblFahrenheit=new Label("Fahrenheit: ");
  TextField tfFahrenheit=new TextField(10);

  derWindowListener myWindowListener=new derWindowListener();
  derActionListener myActionListener=new derActionListener(this);
  
  public Aufg1()
  {
  super("Umrechnung Fahrenheit-Celsius");

  this.pnlLeft.add(lblCelsius);
  this.pnlLeft.add(tfCelsius);
  this.add(pnlLeft,BorderLayout.WEST);


  this.pnlRight.add(lblFahrenheit);
  this.pnlRight.add(tfFahrenheit);
  this.add(pnlRight,BorderLayout.EAST);

  this.pack();
  this.setVisible(true);
  this.addWindowListener(new derWindowListener());

  tfCelsius.addActionListener(myActionListener);
  tfFahrenheit.addActionListener(myActionListener);

  }

 public static void main(String[]args)
  {
  Aufg1 f=new Aufg1();
  }
}



import java.awt.event.*;
import java.text.*;

public class derActionListener implements ActionListener
{
  public Aufg1 f;
  public derActionListener(Aufg1 f)
  {
    this.f=f;

  }
  public void actionPerformed(ActionEvent e)  <--
  {
    double celsius;
    double fahrenheit;
    celsius=Double.parseDouble(f.tfCelsius.getText());
    fahrenheit=Double.parseDouble(f.tfFahrenheit.getText());

    if(e.getSource()==f.tfCelsius)                    <--
    {
     fahrenheit=(celsius*1.8)+32;
     f.tfFahrenheit.setText(fahrenheit);
    }
    else if(e.getSource()==f.tfFahrenheit)        <--
    {
     celsius=(fahrenheit-32)/1.8;
     f.tfCelsius.setText(celsius);
    }
  }

}
Danke im Vorraus für eure Hilfe
 
R

Roar

Gast
benutze kenien actionlistener, sondern füge mit addTextListener() einen TextListener jedem deiner textfelder hinzu.
in der textValueChanged(TextEvent) kannst du dann den gleichen code wie in deiner bisherigen actionPerformed() ausführen
 
D

DerVerwirrte

Gast
Ich habe leider bis jetzt noch nichts von textlistenern gehört. Könntest du mir vielleicht sagen wo und wie ich die konkrett einsetzen sollte?
 
D

DerVerwirrte

Gast
Hab jetzt mich über TextListener informiert und hab das jetzt so gelöst:

Code:
import java.awt.event.*;
import java.text.*;

public class derTextListener implements TextListener
{
  public Aufg1 f;
  public derTextListener(Aufg1 f)
  {
    this.f=f;

  }
  public void textValueChanged(TextEvent e)
  {
    double celsius;
    double fahrenheit;
    celsius=Double.parseDouble(f.tfCelsius.getText());
    fahrenheit=Double.parseDouble(f.tfFahrenheit.getText());

    if(e.getSource()==f.tfCelsius)
    {
     fahrenheit=(celsius*1.8)+32;
     f.tfFahrenheit.setText(fahrenheit);
    }
    else if(e.getSource()==f.tfFahrenheit)
    {
     celsius=(fahrenheit-32)/1.8;
     f.tfCelsius.setText(celsius);
    }
  }

}


Ich bekomme jetzt jedoch die Fehlermeldung:

.\derTextListener.java:22: cannot resolve symbol
symbol : method setText (double)
location: class java.awt.TextField
f.tfFahrenheit.setText(fahrenheit);
^
.\derTextListener.java:27: cannot resolve symbol
symbol : method setText (double)
location: class java.awt.TextField
f.tfCelsius.setText(celsius);
^

Ist doch alles korrekt geschrieben oder nicht? Aber warum meckert er dann noch?
 
R

Roar

Gast
ne. die methode setText() erwartet als parameter einen string. du kannst aus deinen zahlen so einen String machen: String.valueOf(fahrenheit);
ansonsten schauts richtig aus.
achte darauf dass klassennamen normalerweise groß geschrieben werden: DerTextListener
 
D

DerVerwirrte

Gast
Danke vielmals Roar. Das Programm läuft jetzt.

Es läuft jedoch nicht korrekt :cry:

Wenn ich das Programm starte und einen Wert in ein Feld eingebe, wird kein Wert im anderen Feld angezeigt.
Wenn ich in das zweite Feld auch noch einen Wert eintrage(was ansich Blödsinn ist), bekomme ich irgendeinen neuen wüsten Wert im ersten Feld vorgesetzt.

Fragen über Fragen..

Hilft mir bitte Leute!
 
G

Guest

Gast
Es ist vollbracht. Endlich funktionierts.

Hab den TextListener folgendermaßen umgestellt:

Code:
import java.awt.event.*;
import java.text.*;

public class derTextListener implements TextListener
{
  public Aufg1 f;
  public derTextListener(Aufg1 f)
  {
    this.f=f;

  }
  public void textValueChanged(TextEvent e)
  {
     double celsius,fahrenheit;

    if(e.getSource()==f.tfCelsius)
    {
     celsius=Double.parseDouble(f.tfCelsius.getText());
     fahrenheit=(celsius*1.8)+32;
     f.tfFahrenheit.setText(String.valueOf(fahrenheit));
    }
    else if(e.getSource()==f.tfFahrenheit)
    {
     fahrenheit=Double.parseDouble(f.tfFahrenheit.getText());
     celsius=(fahrenheit-32)/1.8;
     f.tfCelsius.setText(String.valueOf(celsius));
    }
  }

}

Danke nochmal und gute Nacht!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
K Event Handling Mit ActionPerformed und java.io arbeiten AWT, Swing, JavaFX & SWT 3
M Koordinatensystem für Projektorientiertes Arbeiten AWT, Swing, JavaFX & SWT 2
M Arbeiten mit actionPerformed(ActionEvent) oder Alternative AWT, Swing, JavaFX & SWT 7
Y Arbeiten mit JTable AWT, Swing, JavaFX & SWT 3
B Arbeiten mit Prozessbar und alles drum herum AWT, Swing, JavaFX & SWT 3
T Keylistener hört auf zu arbeiten AWT, Swing, JavaFX & SWT 9
I Arbeiten mit mehreren Fenstern AWT, Swing, JavaFX & SWT 4
G Erstes arbeiten mit GUI AWT, Swing, JavaFX & SWT 16
T Arbeiten mit Swing AWT, Swing, JavaFX & SWT 6
M Mit mehreren Panels arbeiten AWT, Swing, JavaFX & SWT 2
O mit komponenten arbeiten AWT, Swing, JavaFX & SWT 2
M 2 gleichberechtigte Fenster sollen miteinander arbeiten AWT, Swing, JavaFX & SWT 7
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
kodela Verspätete Anzeige in Textfeldern AWT, Swing, JavaFX & SWT 8
J Event Handling Button "enablen" wenn Eingaben in Textfeldern korrekt sind AWT, Swing, JavaFX & SWT 1
P Text aus TextFeldern tauschen AWT, Swing, JavaFX & SWT 2
F Text von Textfeldern verarbeiten AWT, Swing, JavaFX & SWT 12
T Input-Check bei Textfeldern in Table AWT, Swing, JavaFX & SWT 5
P Formular mit n-Textfeldern generieren AWT, Swing, JavaFX & SWT 7
P Applet darstellung von Textfeldern Problem AWT, Swing, JavaFX & SWT 3
Z Wie kann ich Text unter den Textfeldern einfügen? AWT, Swing, JavaFX & SWT 3
E transparenz (alpha) - komisches aussehen von textfeldern! AWT, Swing, JavaFX & SWT 2
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
A 2 Stages gleichzeitig öffnen AWT, Swing, JavaFX & SWT 2
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
M JPopupMenu per Klick schließen und gleichzeitig ActionEvent auf JButton? AWT, Swing, JavaFX & SWT 15
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
F getrennte formulare schliessen gleichzeitig AWT, Swing, JavaFX & SWT 7
S SWT Zwei Tabellen gleichzeitig Scrollen AWT, Swing, JavaFX & SWT 3
N zwei JComponente gleichzeitig auf JPanel hinzufügen AWT, Swing, JavaFX & SWT 22
L 2 Fenster gleichzeitig bewegen AWT, Swing, JavaFX & SWT 2
D JCheckBoxItem in Untermenüs alle gleichzeitig an- bzw. aus AWT, Swing, JavaFX & SWT 3
P Drei Scrollpanes gleichzeitig scrollen AWT, Swing, JavaFX & SWT 3
H Mehrere JDialogs gleichzeitig offen AWT, Swing, JavaFX & SWT 12
I JTable: "GLEICHZEITIG" zwei verschiedene TableMode AWT, Swing, JavaFX & SWT 2
G 3 oder mehr JTable nebeneinander gleichzeitig vert. scrollen AWT, Swing, JavaFX & SWT 4
J Einmal gleichzeitig auf zwei Graphics malen? AWT, Swing, JavaFX & SWT 5
B Resizable & setAlwaysOnTop gleichzeitig setzen AWT, Swing, JavaFX & SWT 10
K Spaltenbreite von mehreren Tabellen gleichzeitig verändern AWT, Swing, JavaFX & SWT 3
T Labels gleichzeitig bewegen und anklicken AWT, Swing, JavaFX & SWT 3
sliwalker 2 JComboBox ändern sich ungewollt gleichzeitig AWT, Swing, JavaFX & SWT 2
U Mehrere Tasten gleichzeitig AWT, Swing, JavaFX & SWT 4
L Komponente und Grafik gleichzeitig auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen


Oben