JFormattedTextField ints auslesen

tdc

Bekanntes Mitglied
Hi!

Ich habe letztendlich ein ganz einfaches Problem:
Ich habe ein (eigentlich mehrere) JFormattedTextField in das man nur Zahlen eingeben kann
Java:
addition1 = new JFormattedTextField(new MaskFormatter("#####"));
und diese Zahlen will ich in Form von ints auslesen.


Hier mein Ansatz:
Zuweisung des Wertes:
Java:
addition1.setValue(new Integer(1));
Auslesen:
Java:
addition.getValue()
hat nicht geklappt, ein Freund hat mir aber dann folgenden Tipp gegeben:
Java:
((Number) addition1.getValue()).intValue()
Da kommt aber dann merkwürdigerweise immer 0 raus. ???:L


Und soeben habe ich gemerkt, dass man bei .setValue() anscheinend den inhalt des Feldes anscheinend nicht verändern kann, also ist mein Ansatz wohl schrott. :(

Ich hoffe, ihr könnt mir helfen!
mfg tdc
 

Crasher

Mitglied
Hi,

Schrott ist dein Ansatz nicht. Du musst nur bedenken, dass du mit
Java:
new MaskFormatter("#####")
auch angibst, dass das Feld 5 Zahlen enthalten muss. Ansonsten bekommst du eine Exception wenn du den String aus dem Textfeld in Integer parsen möchtest.

Du kannst es so machen, wie Du es begonnen hast:
Java:
int myInt = Integer.parseInt(addition1.getValue().toString());
oder so
Java:
int myInt = Integer.parseInt(jaddition1.getText());
(Funktioniert dann aber nur, wenn Du Deine 5 zeichen voll hast)


Falls die Zahlen in deinem Feld immer unterschiedlich groß sind (mal bestehend aus 3 Ziffern, mal aus 4), benutze doch einfach ein normales Textfeld und verwende ein PlainDocument.
Das ganze würde ungefähr so aussehen:

Java:
    jaddition1.setDocument(new PlainDocument() {
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        //Hiermit kannst Du z.B. die max Länge des Feldes angeben
        if(this.getLength() >= 5) return;

        //Hier schmeißt Du alles raus, was keine Zahl ist
        for(int i = 0; i < str.length(); i++) {
            if(!Character.isDigit(str.charAt(i))) return;
        }

        //Und Hier setzt Du deine Zahlen in dein Textfeld
        super.insertString(offs, str, a);
      }
    });

Das auslesen erfolgt dann so:

Java:
int myInt = Integer.parseInt(jaddition1.getText());

So musst Du nicht immer 5 Zeichen angeben und das Handling finde ich persönlich auch besser.

Greetz
Crasher
 

Crasher

Mitglied
Hi,

die int offs sind die Zahlen, die in das Textfeld einteragen werden.
Das String str steht für alles was Strings sind und das AttributeSet a steht glaube ich für die Zuordung auf deiner Tastatur (Der Key "A" auf deiner Tastatur ist dem Character A zugeordnet).

Aber woher dein Fehler kommt, kann ich dir nicht so sagen.
Vielleicht kannst Du mal deinen Code posten, indem du dein Text feld initialisierst und verarbeitest.

Greetz
Crasher
 

tdc

Bekanntes Mitglied
Ok, hier ist der Code:
Java:
        try
		{
			addition1 = new JFormattedTextField();
			...
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}
		addition1.setDocument(new PlainDocument() {
		      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { //In dieser Zeile kommt bei AttributeSet a die Fehlermeldung
		          if(this.getLength() >= 5) return;
		   
		          for(int i = 0; i < str.length(); i++) {
		              if(!Character.isDigit(str.charAt(i))) return;
		          }
		   
		          super.insertString(offs, str, a);
		        }
		});
		
		addition1.setValue(new Integer(1));
 

Crasher

Mitglied
Hi,

du benutzt ja immer noch ein JFormattedTextField.
Du musst dann ein JTextField verwenden. Daher rührt auch deine Fehlermeldung.

Java:
JTextField addition1 = new JTextField ();

Und um etwas in dein TextField zu schreiben verwendest Du am besten:

Java:
addition1.setText("" + meinIntegerWert);

statt setValue.

Die Anführunsstriche musst Du setzen, damit dem Textfeld ein String übergeben werden kann.

Würde im ganzen dann so aussehen:

Java:
try{
    addition1 = new JTextField();
    // Denk dran, dies auch bei der Initialisierung anzupassen.
    // Also bei "JTextField addition1;"
}
catch (ParseException e){
    e.printStackTrace();
}

addition1.setDocument(new PlainDocument() {
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { //In dieser Zeile kommt bei AttributeSet a die Fehlermeldung
          if(this.getLength() >= 5) return;

          for(int i = 0; i < str.length(); i++) {
              if(!Character.isDigit(str.charAt(i))) return;
          }

          super.insertString(offs, str, a);
        }
});

addition1.setText("" + new Integer(1));

Greetz
Crasher
 

Crasher

Mitglied
Aber wenn ich deinen Code rekonstruiere, bekomme ich keine Fehlermeldung ???:L

Aber passe mal meine Änderungen an. Ansonsten Postest Du mal deinen kompletten Code und ich schau iIhn mir mal an.
 

Crasher

Mitglied
Aller guten Dinge sind drei:

Hier ein Bespielcode:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class TestTextField extends JFrame {
  private JTextField jaddition1 = new JTextField();

  public TestTextField(String title) {
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 180;
    int frameHeight = 100;
    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);
    Container cp = getContentPane();
    cp.setLayout(null);
    
    //Textfeld setzen
    jaddition1.setBounds(20, 20, 121, 24);
    jaddition1.setText("");
    cp.add(jaddition1);
    
    //PlainDocument setzen
    jaddition1.setDocument(new PlainDocument() {
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { //In dieser Zeile kommt bei AttributeSet a die Fehlermeldung
        if(this.getLength() >= 5) return;

        for(int i = 0; i < str.length(); i++) {
            if(!Character.isDigit(str.charAt(i))) return;
        }

        super.insertString(offs, str, a);
      }
    });

    //Wert an Textfeld übergeben
    jaddition1.setText("" + 123456);
    
    setVisible(true);
  }

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

Crasher

Mitglied
Hi,

Füge doch bei deinen Imports mal die AttributeSet Klasse mit ein: ;-)
Java:
import javax.swing.text.AttributeSet;
Dann gehts.


PS: Und vergiss nicht, nur noch getText() und setText() zu verwenden anstatt getValue() und setValue(). Diese Methoden gibt es nämlich in der JTextField Klasse nicht.

ICh hoffe ich konnte Dir helfen.

Greetz
Kevin
 
Zuletzt bearbeitet:

tdc

Bekanntes Mitglied
Danke für deine Hilfe! Jetzt geht es auch soweit.


Allerdings eine letzte Sache noch: ich habe eine Methode, der zwei ints übergeben werden müssen. .setText liefert einen String zurück in dem sich dann nur Zahlen befinden. Wie bekomme ich es aber jetzt hin, die ints aus dem JTextField der Methode zu übergeben?
 

Crasher

Mitglied
Hi,

Du musst bevor Du den Inhalt an deine Methode übergibst, den ausgelesenen Inhalt des Textfeldes in ints parsen:

Java:
int myIntVariable = Integer.parseInt(addition1.getText());

dann kannst Du die Variable myIntVariable an deine Methode übergeben.

Greetz
Crasher
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ReinerCoder Problem mit JFormattedTextField Java Basics - Anfänger-Themen 2
M Nur Zahlen oder ein leeres JFormattedTextField zulassen Java Basics - Anfänger-Themen 7
C JFormattedTextField soll Pflichtfeld sein Java Basics - Anfänger-Themen 19
P JFormattedTextField auslesen Java Basics - Anfänger-Themen 4
A JFormattedTextField Zahleneingabe auch mit beginnender 0 Java Basics - Anfänger-Themen 4
E JFormattedTextField Zahl extrahieren - warum Number und nicht Double? Java Basics - Anfänger-Themen 4
A JFormattedTextField + DateFormatter Java Basics - Anfänger-Themen 3
B Kommazahl mit 2 Nachkomma-Stellen im jFormattedTextField Java Basics - Anfänger-Themen 6
M JFormattedTextField nachkommastellen beim verlassen prüfen Java Basics - Anfänger-Themen 11
P JFormattedTextField auf Ausgangszustand zurücksetzen? Java Basics - Anfänger-Themen 4
F Range für new JFormattedTextField möglich? Java Basics - Anfänger-Themen 2
G Textmarke in JFormattedTextField? Java Basics - Anfänger-Themen 2
R JFormattedTextField Zahlenbereich zulassen Java Basics - Anfänger-Themen 4
J JFormattedTextField oder NumberFormat! Java Basics - Anfänger-Themen 12
P JFormattedTextField auf x zeichen beschränken Java Basics - Anfänger-Themen 6
B char Array mit ints Java Basics - Anfänger-Themen 7
B ints mit fuehrenden Nullen? Java Basics - Anfänger-Themen 3
Guybrush Threepwood Effizientester Datentyp zur Speicherung einer ungeordneten Menge von ints Java Basics - Anfänger-Themen 8
J Denkanstoß - Array von Objekten mit Ints Java Basics - Anfänger-Themen 20
hdi Datentypen FileOutputStream#write(int) mit ints? Java Basics - Anfänger-Themen 5
Developer_X Ints ablesen Java Basics - Anfänger-Themen 30
RaoulDuke Division von ints Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben