JTextField, der nur Werte zwischen 100 und 1000 zulässt

Status
Nicht offen für weitere Antworten.

tk80

Mitglied
Hallo Leute,

ich bin ein absoluter Java-Neunling und muss ein JTextField erstellen, in dem nur Werte zwischen 100 und 1000 eingegeben werden können, habe es mit insertString versucht, aber irgendwie mache ich was falsch und habe überhaupt keine Idee und bitte deshalb um Hilfe.

DANKE!!


tk
 

tk80

Mitglied
habe ich schon gesehen, aber entweder bin ich zu doof oder habe einfach zu wenig erfahrung...
 

doctus

Bekanntes Mitglied
da gibt es ja bereits ein beispiel für ein Integer-Document.

du speicherst dir einfach den geparsten wert in einer variable

int i;

i = Integer.parseInt(...);

nach dem catch-block, überprüfst du, ob der wert den vorgaben entspricht. wenn ja, machst du den aufruf
super.insertString(offset,s, attributeSet);

sonst einfach return;

lg doctus
 

tk80

Mitglied
ich bin doch zu doof..
was mache ich falsch?

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class FirstGUI extends JFrame {

private JPanel panel;

private JTextField txt;

public FirstGUI() {
super("Fenster");
setLocation(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout(5, 5));

panel = new JPanel(new GridLayout(1, 1));
txt = new JTextField();

panel.add(txt);

getContentPane().add(panel);

pack();
setVisible(true);

class Feld extends PlainDocument

{
Feld(JTextField jTxt) {
this.txt = jTxt;

}

public void insertString(int offset, String s,
AttributeSet attributeSet) throws BadLocationException {
int i;

try {
i = Integer.parseInt(s);
} catch (Exception ex) //only allow integer values
{
Toolkit.getDefaultToolkit().beep(); //macht ein DÜT
//System.out.println("Keine Zahl!");
return;
}
if (i > 100 & i < 1000) {
super.insertString(offset, s, attributeSet);
}
return;

}

}

}

public static void main(String[] args) {
FirstGUI g = new FirstGUI();
}
}
 

Drake

Bekanntes Mitglied
Hallo

dein JtextField muss natürlich auch noch mitkriegen, dass es sich jetzt anders zu verhalten hat.

Code:
    txt = new JTextField(new Feld());

Dann wüder deine Gui Klasse so aussehen:
Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class FirstGUI extends JFrame {

	private JPanel panel;

	private JTextField txt;

	public FirstGUI() {
		super("Fenster");
		setLocation(300, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout(5, 5));

		panel = new JPanel(new GridLayout(1, 1));
		txt = new JTextField(new Feld());

		panel.add(txt);

		getContentPane().add(panel);

		pack();
		setVisible(true);

		

	public static void main(String[] args) {
		FirstGUI g = new FirstGUI();
	}
}

und dann am besten noch die Feld Klasse in eine eigene Datei packen:

Code:
class Feld extends PlainDocument

        public void insertString(int offset, String s,  AttributeSet attributeSet) throws BadLocationException {
            int i;

            try {
               i = Integer.parseInt(s);
            } catch (Exception ex) //only allow integer values
            {
                 return;
            }

            if (i > 100 && i < 1000) {
               super.insertString(offset, s, attributeSet);
            }
            return;

         }

      }
 

tk80

Mitglied
jetzt kann ich zwar nur zahle eingeben, aber keine 0 und alle zahlen und nicht nur zahlen zwischen 100 und 1000
was ist hier falsch?
 

mikachu

Top Contributor
tk80 hat gesagt.:
kriege aber die fehlermeldung :"The method Feld() is undefined for the type FirstGUI"
du musst noch zwei weitere parameter angeben in dem konstruktor von JTextField.
Code:
JTextField( Document doc, String text, int columns );
 

mikachu

Top Contributor
tk80 hat gesagt.:
jetzt kann ich zwar nur zahle eingeben, aber keine 0 und alle zahlen und nicht nur zahlen zwischen 100 und 1000
was ist hier falsch?
also, wenn ich den code ausführe, erscheint zwar das textfeld, aber kann auffer tasta rumhämmern, was aber keine konsequenzen hat. das textfeld bleibt leer...
 

thE_29

Top Contributor
Was auch klar ist!

Da in der Zahl immer nur 1 Stelle ist und 0 ist nun mal nicht größer wie 100!

Am besten ist, du nimmst nen JSpinner!
 

tk80

Mitglied
also, jetzt habe ich erreich, dass nur maximal 4-stellige zahlen eingegeben werden können, wenn die zahl > 1000 oder < 100 ist, will ich die fehlermeldung "nur zahlen zw 100 und 1000 sind erlaubt"...
Code:
                                                                public void insertString(int offset,  String string, AttributeSet attSet)
	    	throws BadLocationException 
	    
	    	{
				int i;
				
				if ((getLength() + string.length()) <= 4 ) 
				{
					try 
					{   
						i=Integer.parseInt(string);
					}
					
					catch (Exception exception) 
					{
						Toolkit.getDefaultToolkit().beep(); 
						return;
					}
					if(i>=100 && i<1001) {
					
					super.insertString(offset,string, attSet); }
					
					System.out.println("nur zw ...");
					return;
					
				}
					

	    	}

außerdem will ich, dass es beep macht, wenn die zahl 5 stellig ist, funktioniert aber nicht, kann zwar keine 5 stellige zahl eingeben, aber beep macht es nicht
wenn die zahl <100 & >1000 ist muss auch eine fehlermeldung erscheinen, habe das mit System.out.println("nur zw ..."); probiert, aber "nur zw...." kriege ich nach jeder eingabe...
kann mir bitte jemand helfen? habe schon gegooglt...
DANKE!
 

thE_29

Top Contributor
Wo hast du das bitte den gemacht?

Code:
     public void insertString(int offset,  String string, AttributeSet attSet) throws BadLocationException
         
     {
       int i;
       
       if ((getLength() + string.length()) <= 4 )
       {
         try
         {   
           i=Integer.parseInt(string);
         }
         
         catch (Exception exception)
         {
           Toolkit.getDefaultToolkit().beep();
           return;
         }
         if(i>=0 && i<1001) {
           super.insertString(offset,string, attSet); 
           System.out.println("NICHT BEEP!");
         }
         System.out.println("nur zw ...");
         return;
       }
       else
       {
         Toolkit.getDefaultToolkit().beep();
         System.out.println("BEEP");
       }
       
       
     }

Macht beep wenn die Eingabe größer 4 ist oder es keine Zahl ist!
 
T

tk8

Gast
aber
Code:
if(i>=0 && i<1001)
funhktioniert nicht, muss ich das dann mit offset machen?
 

thE_29

Top Contributor
Das funktioniert sehr woll!

Warum sollte das nicht funktionieren? Deine Aussagen helfen NULL weiter! Definiere mal was nicht funktioniert!

Und willst du das nicht verstehen, das eine if Abfrage auf i>=100 nicht geht?
Wenn du zB 1 eingibst, ist i = 1 und das ist NIE größer 100!
Und 100 wird nun mal mit 1 + 0 + 0 eingetippt! Und 0 ist genauso nicht größer als 100!

Nimm nen JSpinner und aus!
 
T

tk8

Gast
ich beschäftige mich erst seit 3 wochen mit java, könntest du mir erklären, wie das mit dem jspinner funktioniert?
 
T

tk8

Gast
habe jetzt gekuckt was ein jspinner ist, ich brauche aber JTextField...wenn der benutzer zb 1001 eigubt, muss eine fehlermeldung kommen....
 

thE_29

Top Contributor
Wie wärs wenn du einfach das LongDocument nimmst!

Nen keyListener auf Enter abfragst und dann überprüfst? Du kannst niemals während dem Betrieb überprüfen ob die Eingabe > 100 sein wird!
Woher auch? Wenn der 1 eintippt, kann der nachher 6x0 eintippen und du hast 1 mio oder er tippt nix mehr und hat 1!

Das würde vom logischen Aspekt mit dem Document her nicht gehen! Desweiteren wann willst du ne Fehlermeldung? Während der Eingabe, nach der Bestättigung, etc..
 
T

tk8

Gast
die fehlermeldung soll nach der bestättigung kommen

habe gerade folgendes geschrieben:
Code:
//	Fälle 1001 < i < 1009 unterbinden
	   if(offset==3) 
	   {
	     if(textField.getText().substring(2,3).equals("0")) 
	      {
	         int zahl = new Integer(string).intValue();
	    	if(zahl>0) 
	    	{ Toolkit.getDefaultToolkit().beep(); 
		    return;
	    	}
	    }
	  }

somit kann mann nicht mehr 1001-1009 eingeben. kann man das so machen oder ist das jetzt komplett fakscher weg?
danke
 

thE_29

Top Contributor
Gib mal 999 ein!
Geh dann mal mit Cursor auf Position 0 und tipp nochmals 9 ein ;)

Oha, aufeinmal hast du 9999 ^^

Willst du ein maximale Grenze? Das kann ich dir bauen!
 

thE_29

Top Contributor
Code:
   public class LimitIntDocument extends PlainDocument
   {
     private int maxVal = -1;
     public LimitIntDocument (int maxVal)
     {
       this.maxVal = maxVal;
     }
     
     public void insertString(int offset,  String string, AttributeSet attSet) throws BadLocationException

     {
       int i;

       if ((getLength() + string.length()) <= 4 )
       {
         try
         {
           i=Integer.parseInt(string);
         }

         catch (Exception exception)
         {
           Toolkit.getDefaultToolkit().beep();
           return;
         }
         if(maxVal != -1)
         {
           StringBuffer strBuf = new StringBuffer(getText(0, getLength()));
           strBuf = strBuf.insert(offset, string);
           if(Integer.parseInt(strBuf.toString()) > maxVal)
           {
             System.out.println("GEHT NICHT ZAHL ZU HOCH!");
             Toolkit.getDefaultToolkit().beep();
             return;
           }
         }         
         super.insertString(offset,string, attSet);
         return;
       }
       else
       {
         Toolkit.getDefaultToolkit().beep();
         System.out.println("BEEP");
       }


     }
   }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JTextField nur Double werte eingeben AWT, Swing, JavaFX & SWT 2
L JTextField Umwandeln in double-Werte AWT, Swing, JavaFX & SWT 5
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
H Swing Wie Fokus von JTextField entfernen? AWT, Swing, JavaFX & SWT 9
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
G JTextField Änderungen überprüfen AWT, Swing, JavaFX & SWT 4
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
J 100% CPU Last mit JTextField AWT, Swing, JavaFX & SWT 2
U Swing JTextField aus dem Editmodus nehmen AWT, Swing, JavaFX & SWT 1
Q-bert JTextField per Mausklick einfügen AWT, Swing, JavaFX & SWT 3
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
BobbGott durchsichtiges JTextField mit Hintergrund AWT, Swing, JavaFX & SWT 12
L Swing JTextField nicht sichtbar AWT, Swing, JavaFX & SWT 1
Soloeco Swing JTextField auslesen Klassen übergreifend AWT, Swing, JavaFX & SWT 16
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
N Swing Jtextfield und Ausgabe von Wärungsbeträgen AWT, Swing, JavaFX & SWT 3
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
B jTextfield Übergabe des Strings AWT, Swing, JavaFX & SWT 16
P JTextField unsichtbar machen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
C Swing JTextField Funktion zuweisen - Löschen von Buchstaben/Sonderzeichen AWT, Swing, JavaFX & SWT 6
S JTextField parameter unveränderlich AWT, Swing, JavaFX & SWT 9
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
N Cursor im JTextField AWT, Swing, JavaFX & SWT 6
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
A JTextField und JButtons AWT, Swing, JavaFX & SWT 2
T jTextField mit String befüllen AWT, Swing, JavaFX & SWT 1
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
S Bekomme bein Buttonklick das Jtextfield nicht ausgegeben AWT, Swing, JavaFX & SWT 8
Seikuassi Swing JTextField nimmt kein Einfügen (Strg+V) an AWT, Swing, JavaFX & SWT 4
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
B Swing JTextField mit Bildschirmauflösung skalieren lassen. AWT, Swing, JavaFX & SWT 4
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
T AWT JTextfield verschwindet AWT, Swing, JavaFX & SWT 10
dat_vin KeyEvent jTextField AWT, Swing, JavaFX & SWT 12
C JTextfield ohne Enter feuern AWT, Swing, JavaFX & SWT 8
W Swing JTextField nur für Integer AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
F Swing JTextField (unbeschriebbar machen) AWT, Swing, JavaFX & SWT 12
W JTextfield - Wert lässt sich nicht setzen AWT, Swing, JavaFX & SWT 3
TheJavaKid JTextField: Reine Domain herausfiltern, sonst Inhalt löschen AWT, Swing, JavaFX & SWT 1
R Swing User tippt in unsichtbares JTextField AWT, Swing, JavaFX & SWT 3
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
U Swing JTextField zur Laufzeit auf Eingaben prüfen AWT, Swing, JavaFX & SWT 0
X Swing JTextField AWT, Swing, JavaFX & SWT 4
M Swing JTextField nicht ausfüllbar AWT, Swing, JavaFX & SWT 8
C Problem mit JTextField AWT, Swing, JavaFX & SWT 4
S Swing WYSIWYG JTextField AWT, Swing, JavaFX & SWT 2
vodkaz JTextField && Strings AWT, Swing, JavaFX & SWT 2
R Swing JScrollBar mit JTextField koppeln AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
R Swing JTextField getText() liefert leeren String AWT, Swing, JavaFX & SWT 6
J Mausfarbe ändern JTextField AWT, Swing, JavaFX & SWT 6
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
A editable JTextField & setText AWT, Swing, JavaFX & SWT 2
O Swing JTextField Sync View -> Model AWT, Swing, JavaFX & SWT 3
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
K JTextField mit Standardtext AWT, Swing, JavaFX & SWT 3
F Swing JTextfield Beispieltext soll nach Klick verschwinden AWT, Swing, JavaFX & SWT 3
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
I Swing JTextField ausblenden -? AWT, Swing, JavaFX & SWT 6
0 Swing JTextField - Position ? AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
M Swing jTextfield und PlainDocument AWT, Swing, JavaFX & SWT 18
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
A Swing JTextField durch einen JButton leeren AWT, Swing, JavaFX & SWT 15
Kaniee Swing Woher bekommt JTextField die Eingaben? AWT, Swing, JavaFX & SWT 2
M JTextField gesperrt nach erster Benutzung... AWT, Swing, JavaFX & SWT 4
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben