M
MSchneider
Gast
Hallo,
ich habe folgendes Problem:
Ich habe eine Klasse von JFormattedTextField abgeleitet welche ein Textfield zur Eingabe eines Datums bereitstellen soll, soweit funktioniert es auch. Aber neben der direkten Eingabe des Datums soll durch Drücken von + und - das im Feld aktuell enthaltene Datum um ein Tag erhöht bzw. verringert werden.
Meine Code ist der folgender:
Das Problem ist nun folgendes:
Wenn ich + drücke, wird das Datum korrekt berechnet und in das Textfeld geschrieben, aber das Zeichen + wird noch hinten angehängt, was nicht erwünscht ist.
Ich hab irgendwo gelesen das man das mit "e.consume()" unterbinden kann. Wenn ich aber die auskommentierte Zeile mit e.consume()" im Code aktiviere, wird zwar das Datum richtig berechnet aber nicht in das Textfeld geschrieben. Wahrscheinlich weil mit dem consume() die weitere Eventbearbeitung inkl. des Textfeldupdates abgebrochen wird.
Hat jemand eine Idee wie man das Problem lösen kann?
Danke im Voraus.
ich habe folgendes Problem:
Ich habe eine Klasse von JFormattedTextField abgeleitet welche ein Textfield zur Eingabe eines Datums bereitstellen soll, soweit funktioniert es auch. Aber neben der direkten Eingabe des Datums soll durch Drücken von + und - das im Feld aktuell enthaltene Datum um ein Tag erhöht bzw. verringert werden.
Meine Code ist der folgender:
Java:
public class MyDateField extends JFormattedTextField implements KeyListener
{
public MyDateField()
{
super(
new DateFormatter( DateFormat.getDateInstance (DateFormat.SHORT, Locale.GERMAN))
);
addKeyListener(this);
}
public void keyTyped(KeyEvent e)
{
if (e.getKeyChar()=='+')
{
try
{
// e.consume();
Date date = new Date(); // für den Fall das das Feld leer ist, wird das aktuelle Datum genommen
if (! this.getText().equals(""))
{
date = (Date) getFormatter().stringToValue(this.getText());
}
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
date = cal.getTime();
this.setText(getFormatter().valueToString(date));
System.out.println(date.toLocaleString());
}
catch(ParseException e1)
{
// ...
}
}
else if (e.getKeyChar()=='-')
{
// analog zu '+'
}
}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
}
Das Problem ist nun folgendes:
Wenn ich + drücke, wird das Datum korrekt berechnet und in das Textfeld geschrieben, aber das Zeichen + wird noch hinten angehängt, was nicht erwünscht ist.
Ich hab irgendwo gelesen das man das mit "e.consume()" unterbinden kann. Wenn ich aber die auskommentierte Zeile mit e.consume()" im Code aktiviere, wird zwar das Datum richtig berechnet aber nicht in das Textfeld geschrieben. Wahrscheinlich weil mit dem consume() die weitere Eventbearbeitung inkl. des Textfeldupdates abgebrochen wird.
Hat jemand eine Idee wie man das Problem lösen kann?
Danke im Voraus.
Zuletzt bearbeitet von einem Moderator: