Integerzahl in einem JTextField

plammy

Bekanntes Mitglied
Hallo zusammen..

Ich komme mal mit einem sehr oft vorkommendes Problem und dennoch immer wieder problematisch trotz den ganzen Lösungen im Internet. Es geht um JTextField. Ich möchte das Eingeben von einem bis zu 4stelligen Intergerzahl (zB.: 0 bis 2000)in dem JTextField erlauben.
Ich habe in dem Forum schon ein Thema gefunden, wo verschiedene Beispiele aufgeführt waren wie das gehen sollte.(Meine Klasse IntegerField) Ich hab ausprobiert. Es zeigt mir keinen Fehler aber es funktioniert nicht..:( ich kann immer noch Zahlen, Buchstaben unbegrenzt eintippen.

/** Klasse IntegerField **/
Code:
public class IntegerField extends PlainDocument{

   public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException
    {
      try{
             Integer.parseInt(s);
      } 
      catch(Exception ex) {
            Toolkit.getDefaultToolkit().beep();
                        return ;
         }
      insertString(offset,s, attributeSet);
    }
}



/** Panel **/
Code:
public class Panel {
    
    public static JPanel initComponents() {
    ...
        JTextField w_wrapper = new JTextField(new IntegerField(),"",4);
    ...
   }
}

:autsch:
 

CortPoker

Aktives Mitglied
Wenn du die Methode insertString() aus deiner IntegerField Klasse nirgends aufrufst, steht sie zwar in deiner Klasse, wird aber niemals ausgeführt.
Im Prinzip brauchst du aber nicht extra ein neues Feld erzeugen (wobei ich mir da sowieso unsicher bin, ob das so funktioniert), sondern es reicht, wenn du deinem ActionListener sagst, er soll versuchen, den Ausdruck zu parsen, und im catch Block in etwa sowas schreibst.
wenn Eingabe == Buchstabe oder Zahl > 2000, dann substring(0, textfield.getText().length()-1)
Dann wird immer die letzte ungültige Eingabe automatisch gelöscht
 

plammy

Bekanntes Mitglied
Wenn du die Methode insertString() aus deiner IntegerField Klasse nirgends aufrufst, steht sie zwar in deiner Klasse, wird aber niemals ausgeführt.


Ich sage ja es soll eine Instanz der Klasse IntegerField erstellt werden, womit ich dann auf die Methode zugreife oder nicht?

JTextField w_wrapper = new JTextField(new IntegerField(),"",4);

Im Prinzip brauchst du aber nicht extra ein neues Feld erzeugen (wobei ich mir da sowieso unsicher bin, ob das so funktioniert), sondern es reicht, wenn du deinem ActionListener sagst, er soll versuchen, den Ausdruck zu parsen, und im catch Block in etwa sowas schreibst.
wenn Eingabe == Buchstabe oder Zahl > 2000, dann substring(0, textfield.getText().length()-1)
Dann wird immer die letzte ungültige Eingabe automatisch gelöscht

Welchen ActionListener? :shock:
 

CortPoker

Aktives Mitglied
Damit greifst du noch nicht auf die Methode zu. Damit instanziierst du ein Objekt vom Typ IntegerField, mehr aber auch nicht.
Willst du jetzt darauf zugreifen, musst du die Methode irgendwo aufrufen (z.B. im Konstruktor).
Streiche ActionListener, setze KeyListener.
Irgendwie musst du deinem Textfeld ja mitteilen, was es machen soll, wenn da Input ist
 

plammy

Bekanntes Mitglied
sry ich weiß immer noch nicht was du meinst ich sollte ActionListener auslassen.. ich hab doch nirgendwo ActionListeer... Kann ich nicht einfach in dem Konstruktor von IntergerField(){} nicht die methode aufrufen.. so wird das bei initialisieren auch die methoden zugegriffen
 

CortPoker

Aktives Mitglied
Dann wird einmal die Methode aufgerufen und einmal geprüft, ob die Eingabe stimmt (und zwar direkt beim Programmstart), macht also wenig Sinn.
Listener sind dir aber ein Begriff?
 

plammy

Bekanntes Mitglied
ich bin eher auf Stufe Java-Anfänger :).. Ich hab ActionListener für JFileChooser mal benutzt.. aber ansonsten nicht viel damit gearbeitet
 

CortPoker

Aktives Mitglied
Dann schau die mal den KeyListener (speziell die Methode keyReleased) an.
Die werden dir dann schon weiterhelfen, wenn du nicht direkt ein JFormattedTextfield nutzen möchtest
 

plammy

Bekanntes Mitglied
Leute es lag nur daran dass ich super. ausgelassen hatte :) ich hatte am anfang fehler deswegen bekommen wegen iwie no suitable .. es lag daran dass AttributeSet falsch importiert war von netbeans... statt aus javax.text war das java.print oder so :).. das wars :) funktionier jetzt einwandfrei mit super ohne jegliche andere Änderungen
 
Zuletzt bearbeitet:

plammy

Bekanntes Mitglied
Was ist aber noch gerne wissen würde ist Besteht eine Möglichkeit nicht jeden einzelnen TextField .setDocument zu geben sondern iwie für alle? Ich habe nämlich über 40 textfelder und die müssen alle diese Eigenschaft besitzen. Ich will aber keine array[] benutzen weil ich später jeden textfield genau indentifizieren will.
 

bERt0r

Top Contributor
Du kannst das in eine For Schleife schreiben.
Java:
JTextField w_wrapper = new JTextField(new IntegerField(),"",4);
 

plammy

Bekanntes Mitglied
Aber füe eine foreach-Schleife brauche ich ein array den ich ich durchlaufen kann... Ich will aber kein Array

und ich habe das jetzt mit
w_tile1.setDocument(new IntegerField(4));
umgesetzt
 

Attila

Bekanntes Mitglied
Java:
JTextField tf = new JTextField(4);
AbstractDocument aDoc = (AbstractDocument)tf.getDocument();
aDoc.setDocumentFilter(new DocumentFilter(){
      @Override
      public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)
            throws BadLocationException {
          Document doc = fb.getDocument();
          String oldString = doc.getLength()>0 ? doc.getText(0,doc.getLength()) : "";
          String newString = oldString.substring(0, offs) + str +
                (doc.getLength() > offs + length ? oldString.substring(offs+length) : "");
          if (testInput(newString)){
              super.replace(fb, offs, length, str, a);
          } else {
              Toolkit.getDefaultToolkit().beep();
          }
      }

      @Override
      public void remove(FilterBypass fb, int offs, int length) throws
                       BadLocationException {
          Document doc = fb.getDocument();
          String oldString = doc.getLength()>0 ? doc.getText(0,doc.getLength()) : "";
          String newString = oldString.substring(0, offs) +
                (doc.getLength() > offs + length ? oldString.substring(offs+length) : "");
          if (testInput(newString)){
              super.remove(fb, offs, length);
          } else {
              Toolkit.getDefaultToolkit().beep();
          }
    }

      private boolean testInput(String inpStr){
          int num;
          if (( inpStr.length() > 1 ) && (inpStr.charAt(0) == '0'))
                  return false;
          try{
              num = Integer.parseInt(inpStr);
          } catch (NumberFormatException e){
              return false;
          }
          return (num > -1 & num < 2001) ? true : false;
      }
});
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
F JavaFX JavaFX - Hintergrundmusik in einem seperatem Task/Service AWT, Swing, JavaFX & SWT 6
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Dreieck in einem Kreis??? AWT, Swing, JavaFX & SWT 1
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
J Swing unterschiedliche Inhalte in einem JFrame AWT, Swing, JavaFX & SWT 3
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
S Punkt finden der in einem Shape liegt..? AWT, Swing, JavaFX & SWT 11
A Swing Externe Klassen aufrufen und in einem bereits vorhandenen Container einfügen AWT, Swing, JavaFX & SWT 0
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
J RadioButton-Gruppe in Kombination mit einem Button AWT, Swing, JavaFX & SWT 6
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
V Fenster in einem Fenster anordnen AWT, Swing, JavaFX & SWT 7
E Alles in einem Fenster AWT, Swing, JavaFX & SWT 5
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben