VerifyListener - Ersetzen einer 0

tanechka

Bekanntes Mitglied
Hallo zusammen,

ich benutze für die Verifizierung der Eingabe eines Betrages eine Implementierung des VerifyListener(SWT).
Code:
public class BetragVerifyListener implements VerifyListener {

    @Override
    public void verifyText(VerifyEvent evt) {

        boolean doit = true;
      
        // Die Eingabe soll ein Digit sein, sonst wird die Eingabe nicht zugelassen
        if (!Character.isDigit(evt.character) || evt.character == ',' || evt.character == '.') {
            doit = false;
        }
        if (!doit) {
            if (evt.text != null) {
                doit = true;
            }
        }
    }
}
Wenn die Maske geladen wird,steht in dem Textbox erstmal eine "0". Ich habe das Problem, dass wenn man eine Eingabe macht z.B. eine "1", wird es nach dem Verifizieren eine "10". Die "0" steht hintern dran.
Wie könnte ich das entfernen? Geht das irgendwie in der Funktion verifyText()?
z.B. über:
Code:
Text text = (Text) evt.getSource();
String oldS = text.getText();
if(doit && oldS.equals("0")) {
                   ...
}
 

Oneixee5

Top Contributor
Irgendwie macht das keinen Sinn. Die Variable 'doit' ist lokal und wird nie gelesen/ausgewertet, auch das VerifyEvent wird nicht verändert. Der BetragVerifyListener macht also nichts.

Edit: Ich habe mal in die API geschaut: https://download.eclipse.org/rt/rap...e/api/org/eclipse/swt/events/VerifyEvent.html
Man muss das Feld doit von VerifyEvent setzen, also:
Java:
evt.doit = isValid(evt.character);
Java:
private boolean isValid(char input) {
    return Character.isDigit(input);
}
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
Wenn die Maske geladen wird,steht in dem Textbox erstmal eine "0". Ich habe das Problem, dass wenn man eine Eingabe macht z.B. eine "1", wird es nach dem Verifizieren eine "10". Die "0" steht hintern dran.
Also wie wir festgestellt haben, macht der BetragVerifyListener nichts und deshalb auch keine 10 oder 1 oder was auch immer. Wenn in einem Textfeld eine 0 steht und man tippt noch etwas dazu, dann ist der alte Wert nicht weg.
Man kann folgendes machen: Wenn das Feld aktiv wird, also man klickt hinein oder wechselt mit der Tab-Taste dahin, dann selektiert/markiert man den gesamten Inhalt. Wenn der Nutzer jetzt tippt, dann ersetzt er automatisch den vorherigen Wert. Zusätzlich kann man natürlich prüfen ob der Inhalt des Feldes 0 ist.
Java:
/* ungetestet */
numberInput.addListener(SWT.FocusIn, new Listener() {
    public void handleEvent(Event e) {
        numberInput.selectAll();
    }
});
 

tanechka

Bekanntes Mitglied
Also wie wir festgestellt haben, macht der BetragVerifyListener nichts und deshalb auch keine 10 oder 1 oder was auch immer. Wenn in einem Textfeld eine 0 steht und man tippt noch etwas dazu, dann ist der alte Wert nicht weg.
Man kann folgendes machen: Wenn das Feld aktiv wird, also man klickt hinein oder wechselt mit der Tab-Taste dahin, dann selektiert/markiert man den gesamten Inhalt. Wenn der Nutzer jetzt tippt, dann ersetzt er automatisch den vorherigen Wert. Zusätzlich kann man natürlich prüfen ob der Inhalt des Feldes 0 ist.
Java:
/* ungetestet */
numberInput.addListener(SWT.FocusIn, new Listener() {
    public void handleEvent(Event e) {
        numberInput.selectAll();
    }
});
Vielen Dank für die Lösung, es ist wonach ich gesucht habe.

Der VerifyListener soll ich noch überarbeiten. Das Problem ist, ich mache noch die Formatierung. Z.B. aus eine "1" mache ich eine "1,00" und die Verifizierung soll das auch zulassen. Ich mache also eine Betrag mit Komma-Stellen.
 

Oneixee5

Top Contributor
ich mache noch die Formatierung. Z.B. aus eine "1" mache ich eine "1,00" und die Verifizierung soll das auch zulassen.
Da wäre evtl. Regex das Richtige zur Prüfung. https://www.baeldung.com/regular-expressions-java

Beispiel:
1.000
1,000
1.000,89
1.000.123.456,89

^-?\d{1,3}(?:\.\d{3})*(?:,\d+)?$

Regular expression visualization
 

Oneixee5

Top Contributor
Das Problem ist, ich mache noch die Formatierung. Z.B. aus eine "1" mache ich eine "1,00" und die Verifizierung soll das auch zulassen.
Dazu noch eine Anmerkung. ich würde nicht so arbeiten. Bei einem Wert von 1,23 musst du das dann als String speichern. Angenommen du speicherst das in einer Datenbank und willst dann mit diesem Wert etwas berechnen, z.B.: eine Summe. Du bist dann gezwungen jedes mal den String in eine Zahl zu konvertieren. Erst dann kannst du rechnen. Die Gefahr ist relativ hoch, dass auch mal was durchrutscht (Bug), z.B.: 1,,12 - für einen String ist das kein Problem, für eine Berechnung schon. Jetzt sucht man in der DB unter 12 Millionen Datensätzen welcher davon für den Fehler in der Berechnung verantwortlich ist. Sinnvollerweise speichert man lieber die Zahlen ab, also Integer oder Dezimal. Man kann immer damit rechnen und wenn der Wert falsch ist, dann kommt schon ein Fehler bei der Eingabe. Also man formatiert nicht die Eingabe um sie dann abzuspeichern und zu prüfen - man formatiert die Anzeige für den Nutzer, denn das funktioniert immer. Gespeichert 1.2 - Anzeige 1,20. Beim Speichern musst du einfach den Wert in eine Zahl umwandeln - wenn das funktioniert ist es immer ein gültige Eingabe. Bei einer Zahl kannst du auch ganz leicht prüfen ob sie z.B. nicht zu groß oder zu klein ist.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N SWT Textfeld und Verifylistener AWT, Swing, JavaFX & SWT 11
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
K JTable komplett durch andere ersetzen AWT, Swing, JavaFX & SWT 4
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
S Swing JPanel in View ersetzen AWT, Swing, JavaFX & SWT 10
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
E JPanel mit anderem JPanel ersetzen AWT, Swing, JavaFX & SWT 5
L SWT Text SelectionText ersetzen durch anderen String AWT, Swing, JavaFX & SWT 6
F JPanel aus sich selbst heraus ersetzen. AWT, Swing, JavaFX & SWT 9
C Anführungszeichen in JTextArea für Datenbank ersetzen AWT, Swing, JavaFX & SWT 3
lumo Swing Componenten ersetzen AWT, Swing, JavaFX & SWT 2
B Swing Windows Shortcuts ersetzen AWT, Swing, JavaFX & SWT 9
S SWT: Widgets ersetzen AWT, Swing, JavaFX & SWT 6
J JPanel ersetzen AWT, Swing, JavaFX & SWT 2
B Bild ersetzen AWT, Swing, JavaFX & SWT 6
B JWidget/ Bild ersetzen AWT, Swing, JavaFX & SWT 3
J Im JLabel Bild durch anderes ersetzen, ohne dass es 'blinkt' AWT, Swing, JavaFX & SWT 12
S Buttons ersetzen AWT, Swing, JavaFX & SWT 5
S Update des fensters beim Ersetzen von JPanels AWT, Swing, JavaFX & SWT 9
B Tabsetpanel durch JPanel ersetzen! AWT, Swing, JavaFX & SWT 4
G JTextArea & JTextField Selection Problem (ersetzen) AWT, Swing, JavaFX & SWT 2
W Elemente aus JPanel bzw. GridBag löschen und ersetzen AWT, Swing, JavaFX & SWT 18
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
S JComponent ersetzen AWT, Swing, JavaFX & SWT 13
T JTextPane - ;-) gegen Smylies ersetzen AWT, Swing, JavaFX & SWT 2
F Das Standardbild beim JEditorPane ersetzen? AWT, Swing, JavaFX & SWT 8
M Panel durch ein anderes Panel ersetzen AWT, Swing, JavaFX & SWT 4
A JTable "ersetzen" AWT, Swing, JavaFX & SWT 2
L Java-Logo in Java-Applikation durch eignes ersetzen AWT, Swing, JavaFX & SWT 12
S AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem AWT, Swing, JavaFX & SWT 4
S Komponente auf einem JPanel ersetzen AWT, Swing, JavaFX & SWT 4
P Text aus JTextField auslesen und Buchstaben ersetzen AWT, Swing, JavaFX & SWT 2
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben