TextFields

Status
Nicht offen für weitere Antworten.

HTML

Bekanntes Mitglied
Hi, ich hab zwei Textfelder und möchte dass wenn ich in das eine eine Zahl reinschreib, dass die danach auch im anderen steht. Kann ich um die Zahl anzuzeigen
Code:
 testfeld.setText();
verwenden, wenn ich davor die Zahl in einen String umgeformt habe?? Gibts das überhaupt oder wie muss ich das machen?? Danke schon mal

und gute nacht
 
B

bygones

Gast
setText erwartet einen String, ergo die Zahl in einen String umwandeln
Code:
3+"";
oder
Code:
Integer.toString(3);
 

Sky

Top Contributor
Verstehe noch nicht so ganz: du hast zwei Textfelder und in beiden soll der gleich Text am Ende stehen ? Warum willst Du das was umwandeln ??

Code:
text1.setText(text2.getText());
 
G

Guest

Gast
Am ende will ich in das eine Feld was eingeben, des umrechnen und im anderen Ausgeben, und wenn man im anderen Feld was eingibt die gleiche Rechnung nur rückwärts. Irgendwo ist da aber der Wurm drin.

Ich poste jetzt mal einen Teil von meinem Prog, aber auch so gehts schon nicht, ich möchte einfach nur den Text auf in dem einen Feld festlegen, also:

Code:
class T1Panel extends JPanel
{
	public T1Panel()
	{
  	
  	DocumentListener listener = new DListener();
  	
  	JTextField KM = new JTextField(7);
  	JTextField ML = new JTextField(7);
  	
  	add(new JLabel("Kilometer:"));
  	add(KM);
  	KM.getDocument().addDocumentListener(listener);
  	add(new JLabel("Meilen:"));
  	add(ML);
  	ML.getDocument().addDocumentListener(listener);
  	
	}
	
   public void setFeld()
   {
   	ML.setText("tet");
   }
   
   private JTextField KM;
   private JTextField ML;
   
   private class DListener implements DocumentListener
   {
      public void insertUpdate(DocumentEvent event) { setFeld(); }
      public void removeUpdate(DocumentEvent event) { setFeld(); }
      public void changedUpdate(DocumentEvent event) {}
   }
}

seht ihr da einen Fehler
 

semi

Top Contributor
Ja, indirekt eine Endlosschleife. Beim Aufruf von JTextField#setText wird ebenfalls
ein DocumentEvent ausgelöst, so dass du dich im Kreis drehst. Entferne den Listener
temporär, für die Dauer der Änderung, aus dem Textfeld.
 

Sky

Top Contributor
Oder nimm einen FocusListener: Die Berechnung wird dann immer beim Verlassen/Betreten eines Feldes durchgeführt.
 
G

Guest

Gast
wie kann ich des temporät entfernen und was genau muss ich eigentlich entfernen.
Sorry das ich erst jetzt schreib und schon mal danke
 
H

HTML nicht angemeldet

Gast
hallo? bitte erklärt mir das mal bissal genauer, weil ich des gern verstehen tät. Was soll ich entfernen damit es geht, oder nur temporär und wie geht temporäres entfernern? Danke
 

L-ectron-X

Gesperrter Benutzer
Es gibt Methoden, um einen Listener an einer Komponente zu registrieren und es gibt Methoden, um Listener-Registrierung wieder zu entfernen.
Die einen beginnen mit add...(), die anderen mit remove...().

Beispiel für den von dir verwendeten DocumentListener:
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/Document.html#addDocumentListener(javax.swing.event.DocumentListener)

und

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/Document.html#removeDocumentListener(javax.swing.event.DocumentListener)
 

Burner

Mitglied
beispiel:

textfeld eingabe, ausgabe

String zahl = eingabe.getText();
ausgabe.setText(" " +zahl);

so einfach kanns gehen :wink:
 

Burner

Mitglied
1. die zahl, die im eingabe textfeld steht, wird in den string zahl eingelesen, mit der methode getText()

2. nun wird die zahl die im string steht einfach mit der methode setText() im ausgabe textfeld angezeit!

3. die aktion kann dann mit einem button oder direkt mit der addActionListerner methode in der initialisierung vom textfeld eingabe eingefúgt werden, sodass kein button mehr nótig ist!



probier es einfach mal aus!
 

Sky

Top Contributor
Burner hat gesagt.:
1. die zahl, die im eingabe textfeld steht, wird in den string zahl eingelesen, mit der methode getText()

2. nun wird die zahl die im string steht einfach mit der methode setText() im ausgabe textfeld angezeit!
Nochmal, nun vielleicht präziser: Was ist der Mehrwert von " " ? Ich konnte aus der Frage nicht rauslesen, dass der String um ein Leerzeichen erweitert werden soll !

Btw.: Sowas in der Art habe ich schon 'ne Woche vorher geschrieben:
Sky hat gesagt.:
Code:
text1.setText(text2.getText());
 

HTML

Bekanntes Mitglied
des is ja schon sehr nett, aber wenn ich das jetzt kompiliere, heißt es kein Fehler. So weit so gut, aber wenn ich es ausführe und gebe in mein eingabe Textfeld ein Zahl ein passiert gar nichts. Ich hab beide Varianten ausprobiert, also ??
 

HTML

Bekanntes Mitglied
private class ferstlisten implements DocumentListener
{
public void insertUpdate(DocumentEvent event) { xx }
public void removeUpdate(DocumentEvent event) { xx }
public void changedUpdate(DocumentEvent event) { xx}
}

Ich glaube das ich hier einen Fehler habe. Das Ändern des Textes passiert in setFeld(); . Bei welchen von den xx muss ich jetzt setFeld(); hinschreiben.

P.S wenn ich beim ersten ( insertUpdate ) statt den xx setFeld hinschreibe kann ich des ganze ausführen, krieg aber einen Fehler sobald ich eine Zahl in mein Feld eingebe.

danke
 

Burner

Mitglied
ok, ich mache mal hier so auf die schnelle ein beispiel programm!

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Beispiel extends Applet
{
TextField eingabe, ausgabe;
Button button;

public void init()
{
eingabe = new TextField(5);
add (eingabe);

ausgabe = new Textfield(5);
add (ausgabe);

button = new Button ("test");
button.addActionListener (new KnopHandler())
{
public void actionPerformed(ActionEvent e)
{
String zahl = eingabe.getText();
ausgabe.setText("" + zahl);
}
}
}

erláuterung:

ausgabe.setText("" +zahl);

ausgabe ist das textfeld fúr die ausgabe

setText () setzt einen tekst oder eine zahl

setText(" hallo 123") in den anfúhrungsstrichen kann man einen festen wert einfúgen, aber in diesen fall soll ja eine zahl von dem programm ausgefúgt werden, also kommt zwischen den " " nichts! + zahl gibt nun das wieder was im string zahl steht! in diesem fall was man im eingabefeld eingegeben hat!
 
R

Roar

Gast
guck doch in die doku wann die einzelnen methoden aufgerufen werden :!: insertUpdate() und removeUpdate() werden wohl reichen.

HTML hat gesagt.:
P.S wenn ich beim ersten ( insertUpdate ) statt den xx setFeld hinschreibe kann ich des ganze ausführen, krieg aber einen Fehler sobald ich eine Zahl in mein Feld eingebe.
tjo hellsehen kann hier niemand :bae:

@Burner: hübsch, aber was hat das mit der frage zu tun? :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B KeyListener auf mehrere TextFields anwenden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben