JFormattedTextField soll Pflichtfeld sein

Ci

Aktives Mitglied
Hallo,

hab ein Formular mit JFormattedTextFielder unter eclipse erstellt. Diese Felder sollen Pflichtfelder sein, damit wenn der Anwender ein Feld auslässt, eine Warnmeldung erhält!

wie bekomme ich so etwas am besten hin?

...ach und, meine Felder müssen eine bestimmte länge haben.
Bsp.: Datum für Monatsangabe soll immer zweistellig sein.

damit die max. Länge zwei sein soll, hab ich das so gemacht:

Java:
class FixedSizeDocument extends PlainDocument {
    private int max = 2;

    public FixedSizeDocument(int max) {
            this.max = max;
    }

    public void insertString(int offs, String str, AttributeSet attr)
                    throws BadLocationException {

            if (str != null) {
                    if (isInt(str) == true) {
                            if (getLength() + str.length() > max) {

                                    str = str.substring(0, max - getLength());
                            }
                            super.insertString(offs, str, attr);
                    }
            }
    }

    public boolean isInt(String s) {
            try {
                    Integer.parseInt(s);
                    return true;
            } catch (Exception e) {
                    return false;
            }
    }
}

zusammen gefasst:
Für das Feld Datum das den Monat angibt, soll die max. Länge zweistellen betrag und muss immer ausgefüllt werden. Wenn eins der Fälle nicht zutrifft, dann soll die Warnmeldung erscheinen.

hoff ihr könnt mir da weiterhelfen
grüß
 

Volvagia

Top Contributor
Das Dokument funktioniert doch eh. Nur ich würde statt parseInt eher Character#isDigit verwenden (und eher auf das "Gegenteil" testen und "== true" weglassen. Ersteres mache ich fast immer, weil verschachtelte Blöcke imho sehr viel hässlicher sind als hintereinander mit ein paar getrennten if abzubrechen, aber viele finden genau das hässlich.)

Ansonst, wie soll die Warnung aussehen? Im einfachsten Fall im Listener die Felder durchtesten und wenn bei einen (trim().lenght() == 0) ist ein "Wollen Sie wirklich fortfahren?"-OptionPane.
 

Ci

Aktives Mitglied
hab den If Block mit == true auskommentiert, funktioniert noch alles soweit.
Allerdings versteh ich nicht was du genau mit statt parseInt eher Character#isDigit genau meinst.

hab einfach mal parseInt durch Character#isDigit ersetze. Hab dann sofort einen Fehler in der Zeile erhalten!
muss auch sagen, dass ich nicht so fit bin in programmieren :(

Die Warnmeldung hab ich mir so vorgestellt, dass ich eine Meldung wie, "Bitte füllen Sie alle Pflichtfelder aus, um fortzufahren" bekomme, als JLabel von mir aus.

das mit dem Listener hab ich jetzt auch nicht verstanden, sorry :noe:

gruß
 

Volvagia

Top Contributor
Nicht den ganzen if, nur das "== true". ^^
Mit isDigit kannst du prüfen, ob ein Char eine Zahl ist.
Wie gesagt, einfach im Listener die Länge des getrimmten (um Whitespace's wie Space etc zu entfernen) Text überprüfen und entweder die Daten handlen oder eine JOptionPane anzeigen.
 

Ci

Aktives Mitglied
nun, ich hab ein Button, der mit dem ActionListener arbeitet, kann ich da einen weiteren Listener einfügen?

hier mal mein Code Abschnitt mit dem Button, der den Ganzen Vorgang quasi abschließt. Hier müsst ich also die Abfrage für mein JFormatedTextField implementieren, damit meine Warnmeldung vorm abschließen erscheint!

Java:
pruefung_abschließen.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e) {
			try {
				gui_leeren();
			
			open_terminal();
			daten_pruefen.setVisible(true);				// Daten prüfen Button freigeben
			
			GUI_ATR.textArea.append("erfolgreich");
			
			}catch (Exception d) {
				d.printStackTrace();
			}
		}		
	});
 

Volvagia

Top Contributor
Klar kannst du nahezu beliebig viele Listener hinzufügen. (Daher der Nameprefix 'add' und nicht 'set'.)
Aber es bringt nichts, da ein Listener ja nicht auf den anderen zugreift, die Prüfung, Anzeigen und Weiterverarbeiten sollten in dem Fall im selben Listener stehen. Könnte z. B. so aussehen:

Java:
pruefung_abschließen.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        try {
        	String text = field.getText();
        	if(text.trim().length() == 0)
        	{
        		JOptionPane.showMessageDialog(null, "Sie müssen alle Felder ausfüllen.",
        				"Irgend ein Titel", JOptionPane.ERROR_MESSAGE);
        		return;
        	}
        	
        	gui_leeren();
        
        	open_terminal();
        	daten_pruefen.setVisible(true);             // Daten prüfen Button freigeben
        
        	GUI_ATR.textArea.append("erfolgreich");
        
        }catch (Exception d) {
            d.printStackTrace();
        }
    }       
});

Galileo Computing :: Java ist auch eine Insel – 19.22 Dialoge und Window-Objekte
JOptionPane (Java 2 Platform SE v1.4.2)

Read, try, failure and learn. ^.^


Übrigens sind deine Namen nicht optimal.
Variablenamen schreibt man kleinUndCamelcase, Konstante UPPERCASE_UND_MIT_UNDERLINES_GETRENNT, zudem sollten direkte klassenübergreifende Variablezugriffe in 99 % der Fälle vermieden und per Methoden erledigt werden.
 

Ci

Aktives Mitglied
hab jetzt ein anderes Problem dadurch :(

unzwar erscheint in meinem Formular nicht immer das Feld, was ausgefüllt werden muss! Aber den Button Prüfung abschließen muss ich nach jedem Durchgang einmal drücken!

d. h. die Warnmeldung erscheint selbst, wenn mein Pflichtfeld bei der Abfrage xyz nicht in meiner Oberfläche ist.
Ist ja auch klar, aber wie kann ich das Problem beseitigen?

so blende ich mein Textfeld für die xyz Abfrage aus:

Java:
field.setVisible(false);

habs jetzt so probiert, aber da meckert der Compiler :(

Java:
if (field.setVisible(true)){
	String feldKartennr = field.getText();
		    if(feldKartennr.trim().length() != 6 )
		    {
		        JOptionPane.showMessageDialog(null, "Karten-Nr.:  Bitte korrekt ausfüllen.",
		        "  Karten-Nr.", JOptionPane.ERROR_MESSAGE);
		                
                        return;
		    }
}
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
setVisible ist void, das heißt es gibt keinen Wert zurück. "Nichts" kannst du nicht prüfen. ^^
Du musst isVisible verwenden, das gibt den Wert zurück.
 

Ci

Aktives Mitglied
hi,

bekomme leider die Fehlermeldung hier:

Code:
The method isVisible() in the type Component is not applicable for the arguments (boolean)
 

Ci

Aktives Mitglied
hi, noch mal ne Bitte an dich.

ich hab noch in meinem Formular JToggleButtons, die ich in eine Gruppe gefasst habe, damit der Anwender immer nur eins davon auswählen kann, auch ein Pflichteingabe.

so hab ich das ganze erzeugt:

Java:
public static JToggleButton toggleButtonA = new JToggleButton("A");
public static JToggleButton toggleButtonB = new JToggleButton("B");
public static JToggleButton toggleButtonC = new JToggleButton("C");

        final ButtonGroup modultyp= new ButtonGroup();
.
.
                toggleButtonA.setBounds(458, 395, 60, 50);
		panel.add(toggleButtonA);
		toggleButtonA.setBackground(new Color(255, 255, 255));
		modultyp.add(toggleButtonA);

.
.
.

wie kann ich jetzt für den Fall den nachfolgenden Code Abschnitt schreiben?

Java:
if (field.isVisible()){
		String feldKartennr = field.getText();
		     if(feldKartennr.trim().length() != 6 )
		     {
		           JOptionPane.showMessageDialog(null, "Karten-Nr.:  Bitte korrekt ausfüllen.",
		           "  Karten-Nr.", JOptionPane.ERROR_MESSAGE);
		           return;
		     }
}
 

Volvagia

Top Contributor
AbstractButton (Java 2 Platform SE 5.0)
Mit einer von den hier gelisteten Methoden kannst du prüfen, ob eine Taste gedrückt ist. Aus der ButtonGroup kannst du die Buttons bekommen, um sie in einer Schleife durchzutesten.
Noch ein Tip: Die Methode gibt wie isVisible eine boolean zurück.

Mit einer ähnlich heißenden Methode, mit dem wie setVisible ein Wert gesetzt wird kannst du einen Button vorauswählen. Damit erspaarst du dir eine Prüfung. Das ist zwar nur 99% sicher, aber wem langweilig ist und er versucht soetwas zu umgehen, der braucht sich über Fehler oder unerwartetes Verhalten nicht zu wundern. ;)


Ich würde dir aber vom Null-Layout mit solchen Klassen abraten. Buttons etc. sind einfach viel zu selbstständig um sicherzugehen dass damit alles immer hinhaut.
 

Ci

Aktives Mitglied
danke, hat geklappt

hier meine Lösung:

Java:
if(modultyp.isSelected(null)){
		     JOptionPane.showMessageDialog(null, "Modultyp:  Bitte eins auswählen.",
		     "  Modultyp", JOptionPane.ERROR_MESSAGE);
		               
                     return;
}

...jetzt hab ich allerdings das Problem vom früheren poste wieder!

Java:
if (field.isVisible()){

wie bietet sich nun die Zeile für das Problem an?
 
Zuletzt bearbeitet:

Ci

Aktives Mitglied
ok, habs hinbekommen ;)

Lösung:

Java:
if (toggleButtonA.isVisible()){
	if (toggleButtonB.isVisible()){
		if (toggleButtonC.isVisible()){
				
		       if(modultyp.isSelected(null)) 
		       {
		             JOptionPane.showMessageDialog(null, "Modultyp:  Bitte eins auswählen.",
		             "  Modultyp", JOptionPane.ERROR_MESSAGE);
		              return;
		       }
	        }
        }
  }
 

Ci

Aktives Mitglied
array blick ich auf keinem Auge.
bin nämlich nicht so fit im programmieren ;)

sollte es mir vllt mal in aller Ruhe anschauen.
Kannst mir aber ne gute Seite empfehlen :toll:

gruß
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ä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
P JFormattedTextField auslesen Java Basics - Anfänger-Themen 4
T JFormattedTextField ints auslesen Java Basics - Anfänger-Themen 11
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
G JTable bei aktivieren einer Zelle soll Text selektiert werden. Java Basics - Anfänger-Themen 24
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Com.Roter Wie soll ich lernen? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
kilopack15 Methode soll int-Array zurückgeben Java Basics - Anfänger-Themen 2
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
K Objekt soll Anwendung über Änderungen informieren Java Basics - Anfänger-Themen 8
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
C Ein Button soll Focus rausfinden und Methode starten Java Basics - Anfänger-Themen 9
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
K Wie lange kann / soll das dauern? Java Basics - Anfänger-Themen 6
R Button soll Wert 1 in Variable schreiben Java Basics - Anfänger-Themen 4
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
T Array soll Werte aufnehmen Java Basics - Anfänger-Themen 2
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
M Weiß nicht, wie ich es nennen soll. Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
H Erste Schritte Ergebniss soll kleiner als 1000 sein Java Basics - Anfänger-Themen 4
M Warum soll man die Finanlize Methode nicht überschreiben und aufrufen? Java Basics - Anfänger-Themen 2
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
T BufferReader soll datei mehrmals lesen Java Basics - Anfänger-Themen 13
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
S Maus soll Programm nicht verlassen Java Basics - Anfänger-Themen 1
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben