JFormattedTextField

Status
Nicht offen für weitere Antworten.

RalphW

Mitglied
Hi *

habe ein kleines CalendarWidget das ein JFormattedTextField benutzt.
Beim initialen Anzeigen setze ich das field auf NULL.
Geht der User hin und tippt ein Wert ein, so wird ein gültiger Datumswert gesetzt. Soll auch so sein.
Ich möchte nun aber auch die Möglichkeit bieten, dass auch der Datumswert wieder gelöscht werden kann. Finde aber derzeit keine Lösung dafür.

Hier mal ein kleines Demo
[HIGHLIGHT="Java"]import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.DateFormatter;

public class JFormattedTF
{
JFormattedTextField field = null;

public JFormattedTF()
{
this.run();
}
public static void main(String args[])
{
JFormattedTF tf = new JFormattedTF();
tf.run();
}
public void run()
{
DateFormatter formatter = new DateFormatter(DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()));
field = new JFormattedTextField(formatter);
field.setValue(null);
field.setPreferredSize(new Dimension(90,20));
JTextField field1 = new JTextField(20);
JPanel center = new JPanel( new FlowLayout(FlowLayout.LEFT) );
center.add(new JLabel("JFormattedTextField:"));
center.add(field,BorderLayout.CENTER);
center.add(new JLabel("JTextField:"));
center.add(field1);
JPanel content = new JPanel( new FlowLayout(FlowLayout.LEFT) );
content.add( center, BorderLayout.SOUTH );
JFrame frame = new JFrame("Test program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(content);
frame.setSize(550,100);
frame.setVisible(true);
}
}[/HIGHLIGHT]
Was ist zu tun (welches Event) damit der Úser das Datum auch wieder löschen kann.

Many thanx

Grüsse
Ralph
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Das musst du ja entscheiden wann er es wieder löschen kann???
Durch ein Button?Wenn er wieder ins Feld hineinklickt???
Durch die DEL Taste???
 

RalphW

Mitglied
ins feld rein focuslistener

o.k hab ein focusLost probiert
<code>
field.addFocusListener(new java.awt.event.FocusAdapter()
{
public void focusLost(FocusEvent e)
{
//dosomething
}
});
</code>

aber wie unterscheide ich jetzt ob der User den Wert gelöscht hat ?
umd dann field.setValue(null) su setzen.
 
G

Gast2

Gast
1. schon mal aufgefallen, dass dein programm 2 mal startet????
2. DEL und ENTF und makieren überschreiben tut doch alles was dein problem genau??
3. du brauchst focus gained wenn er in feld rein geht dann löschen... was ich aber unpraktisch find da wenn er nur eine zahle ändern will er ein komplett neues datum eingeben muss
 

Ebenius

Top Contributor
Du musst dazu den DateFormatter erweitern, so, dass er leere Strings in null parsen kann und null zum leeren String formatiert.

[HIGHLIGHT="Java"]/* $Id: NullableDateFormatter.java,v 1.1 2009/04/01 09:44:53 ebenius Exp $ */

/* Copyright 2009 Sebastian Haufe

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */

package com.ebenius.widget.text;

import java.text.DateFormat;
import java.text.ParseException;

import javax.swing.text.DateFormatter;

/**
* An enhanced date formatter, parsing {@code null} text and empty strings to
* {@code null} values, and formatting {@code null} values to empty string.
*
* @version $Revision: 1.1 $ as of $Date: 2009/04/01 09:44:53 $
* @author Sebastian Haufe
*/
public class NullableDateFormatter extends DateFormatter {

/** Serial version UID */
private static final long serialVersionUID = 7115438228459260264L;

// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------

/**
* Creates a new {@code NullableDateFormatter} with the given date format.
*
* @param format the date format used
* @see DateFormatter#DateFormatter(java.text.DateFormat)
*/
public NullableDateFormatter(DateFormat format) {
super(format);
}

// -------------------------------------------------------------------------
// Overridden parse and format methods
// -------------------------------------------------------------------------

/**
* If the input argument is {@code null} or an empty string, returns {@code
* null}. Otherwise delegates to the standard parse method
* {@link DateFormatter#stringToValue(String)}.
*/
@Override
public Object stringToValue(String text) throws ParseException {
return text == null || text.length() == 0 ? null : super
.stringToValue(text);
}

/**
* If the input argument is {@code null} returns an empty string. Otherwise
* delegates to the standard format method
* {@link DateFormatter#valueToString(Object)}
*/
@Override
public String valueToString(Object value) throws ParseException {
return value == null ? "" : super.valueToString(value); //$NON-NLS-1$
}
}[/HIGHLIGHT]
Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
S JFormattedTextField dezimal variabler Länge AWT, Swing, JavaFX & SWT 12
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
M European Article Number (EAN) in JFormattedTextfield AWT, Swing, JavaFX & SWT 3
L JFormattedTextField AWT, Swing, JavaFX & SWT 3
B Swing JFormattedTextField AWT, Swing, JavaFX & SWT 4
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
S Swing JFormattedTextfield markiert nicht gesamten Inhalt AWT, Swing, JavaFX & SWT 4
C Swing Button in Textfeld (JFormattedTextField) AWT, Swing, JavaFX & SWT 7
A jformattedtextfield unsichtbar und wieder sichtbar machen AWT, Swing, JavaFX & SWT 13
C Swing JFormattedTextField + Eurobetrag AWT, Swing, JavaFX & SWT 2
E Problem mit MaskFormatter und JFormattedTextField AWT, Swing, JavaFX & SWT 3
A EventListener für JFormattedTextField AWT, Swing, JavaFX & SWT 6
B Swing Betrag mit Komma aus jformattedtextfield auslesen. AWT, Swing, JavaFX & SWT 2
E Swing JFormattedTextField Live Validierung AWT, Swing, JavaFX & SWT 4
C Swing Default Werte für JFormattedTextField und Eingaben zurücksetzen AWT, Swing, JavaFX & SWT 5
G JFormattedTextField und DefaultButton AWT, Swing, JavaFX & SWT 6
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
G JFormattedTextField values AWT, Swing, JavaFX & SWT 8
D Eingabemaske im JFormattedTextField ändern AWT, Swing, JavaFX & SWT 3
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
G JFormattedTextField lässt sich nicht mehr leeren AWT, Swing, JavaFX & SWT 4
N PropertyChangeListener an JFormattedTextField AWT, Swing, JavaFX & SWT 7
D Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 6
A Problem mit JFormattedTextField auslesen AWT, Swing, JavaFX & SWT 11
S JFormattedTextField und maximal 3 Stellen. AWT, Swing, JavaFX & SWT 11
M JFormattedTextField und Null-Werte AWT, Swing, JavaFX & SWT 4
E JformattedTextField, Dialog und weitere Kleinigkeiten . AWT, Swing, JavaFX & SWT 2
E Problem mit Validierende Eingabefeldern JFormattedTextField AWT, Swing, JavaFX & SWT 8
B JFormattedTextField mit DecimalFormat in ein Double AWT, Swing, JavaFX & SWT 11
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
H JFormattedTextField - Einen Preis eingeben lassen AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
H JFormattedTextField AWT, Swing, JavaFX & SWT 4
W IP-Adresse mit JFormattedTextField AWT, Swing, JavaFX & SWT 5
F JFormattedTextField formatieren AWT, Swing, JavaFX & SWT 7
J [JFormattedTextField] Nur Zahlen eingebbar AWT, Swing, JavaFX & SWT 3
S [JFormattedTextField] Ja wie denn nun? AWT, Swing, JavaFX & SWT 2
G Datumseingabe mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
B Wert bei JFormattedTextField automatisch aktualisieren AWT, Swing, JavaFX & SWT 2
H Frage zu JFormattedTextField AWT, Swing, JavaFX & SWT 2
G Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 3
M Datumseingabe in ein JFormattedTextfield AWT, Swing, JavaFX & SWT 2
F Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
A JFormattedTextField - vertical misalignment problems... AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen

Neue Themen


Oben