Input/Output Textfeld: nur Integer annehmen

Octo

Mitglied
Hi,
ich wollte für ein Programm von mir eine grafische Oberfläche erstellen (mit NetBeans, das Programm arbeitet mit Zahlenlisten). Jetzt wollte ich über ein Textfeld die eingabe-Methode aufrufen, die (logischerweise) nur Integer verwenden kann. Im Textfeld kann man jedoch auch Buchstaben eingeben. Ich hab dann über try und catch versucht das zu verhindern, aber das klappt noch nicht ganz.

Hier mal der Quelltext der Methode:

Java:
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {                                          
try { Integer.parseInt( funktion.eingabe(eingabeFeld.getText()));}
catch (NumberFormatException e)  {}
}

Raus kommt folgender Fehler: method eingabe in class listenverwaltung.Methodensammlung cannot be applied to given types;
required: int
found: java.lang.String
reason: actual arguement java.lang.String cannot be converted to int by method invocation conversion.

Leider kann ich damit nicht so viel anfangen, hab mir das mit try und catch aus dem Buch "Java ist auch nur eine Insel" abgeschaut. Deswegen weiß ich auch nicht, was falsch sein könnte, wäre über jede Hilfe dankbar 🙂

MfG
Octo
 
So weit ich weiß, kann man in ein Textfeld nur Zeichen eingeben - selbst Zahlen werden als Zeichen gelesen. Musst du halt umwandeln (convertieren).

Kann mich aber auch irren.
 
Ach so, du bekommst dann auf jeden Fall einen String vom Textfeld und musst den dann noch in ein Integer umwandeln:
Code:
int i = Integer.valueOf(str).intValue();
oder
Code:
int i = Integer.parseInt(str);
 
Das umwandeln wollte ich ja mit Integer.parseInt machen. Falls das nicht klappt, soll er eigentich eine exception machen. Ich glaub da ist irgendwo noch ein denkfehler drin.

Edit: Ok, ich habs jetzt anscheinend, parseInt konnte wohl nix mit funktion.eingabe anfangen 🙂

Sieht jetzt so aus:

Java:
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {                                          
try {
   int i = Integer.parseInt( eingabeFeld.getText());
funktion.eingabe(i);}
catch (NumberFormatException e)  {}

edit2: Danke camino, habs auch grad gesehen, scheint die gleiche art und weise zu sein 🙂
 
Zuletzt bearbeitet:
Ich kann mit
Code:
funktion.eingabe(i)
leider auch nichts anfangen. :bahnhof: Wenn du die von mir genannte Lösung mit dem DocumentFilter anwendest, dann wird die Eingabe schon während dem Eintippen geprüft, d.h. du kannst dann nur die gewünschten Zeichen in das Textfeld eingeben.
 
wie wäre es denn mit einem KeyListener für das Textfeld, der nur die Eingabe von Zahlen zulässt?

Gruß Vanny

EDIT:// Sicherlich ist der DocumentFilter die schönere Lösung aber wenns um´s Verstehen geht ist selbstgemacht am schönsten 😛
 
hi
Java:
funktion.eingabe(i)
ist die aktion, die ausgeführt werden soll. Wobei die methode eingabe() halt nur integer annimmt. durch den DocumentFilter wäre die eingabe zwar erstmal passender, aber da ich mich da noch hineinarbeiten müsste, schiebe ich es erstmal nach hinten, a) da es mit parseInt jetzt auch funktioniert und b) ich grad versuche grafische oberflächen zu lernen, und da nicht alles durcheinander möchte 🙂
Mein Anliegen hat sich also geklärt, danke für die hilfe🙂

MfG
Octo
 

Zurück
Oben