JTextfield für ein paar Sekunden füllen und dann wieder leeren

Lautsprecher

Erfahrenes Mitglied
Hallo,
mein Benutzer löst per Knopfdruck einen INSERT-SQL Befehl aus. Solange dieser Prozess läuft soll in einem Textfield neben dem Button eine Anzeige erscheinen (Wie: "Daten werden gebucht!") Die soll so 1,2 Sekunden drin stehen bleiben. Danach muss das Feld wieder leer sein.
Ich hab jetzt schon x-beliege Dinge ausprobiert aber entweder ist erscheint überhaupt keine Anzeige. Oder die Anzeige im Textfeld wird nicht mehr gelöscht!


Code:
jTKODatum.setText(datumeinfügen);
jTKOZeit.setText(zeiteinfügen);
 String insertString = "INSERT ........ BEFEHL................
 st.executeUpdate(insertString);

try 
{
    Thread.sleep( 1000 );
} 
catch ( InterruptedException e ) 
{}
							
jTMitarbeitername.setText("");
jTPersonalnr.setText("");
jTKODatum.setText("");
jTKOZeit.setText("");
 
Hi!

Ich hab zwar jetzt leider keinen Code parat, aber warum läßt du nicht einfach einen Timer mitlaufen? Löst vielleicht das Problem. Wobei ich gestehn muss, dass ich jetzt keine Ahnung habe wie du das mit dem Datenbankzugriff koordinieren kannst (wenn das überhaupt wichtig ist). Wenn der Timer die Zeit, die du ihm einstellen kannst, abgelaufen hat, dann löst er einfach ein Event aus, und dann löscht du einfach die Anzeige im Textfeld.

Ich hoffe ich habe deine Frage richtig verstanden :)

Gruß
TOM
 
ich würde einfach vor der SQL-Abfrage einen Thread starten, der in das Textfeld schreibt, sich dann 2 sekunden schlafen legt und danach den Inhalt wieder löscht. Ob das jedoch eine besonders elegante Lösung ist kann ich dir nicht sagen:D
 
Zuletzt bearbeitet:
Hi Tom
das mit dem Timer ist auch Interessant, denn mit try and sleep funktioniert es nicht richtig:
Habe es jetzt mal so probiert:
try
{
textfeld.setText("Datum")
Thread.sleep( 1000 );
}
Funktioniert aber nicht
 
Hallo!

Code:
  /**
   * 
   */
  package de.tutorials;
  
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  
  import javax.swing.JFrame;
  import javax.swing.JTextField;
  import javax.swing.Timer;
  
  /**
   * @author daritho
   * 
   */
  public class FillAndEmptyTextFieldOnIntervalExample extends JFrame {
  
  	JTextField textField;
  
  	boolean isFieldSet = false;
  
  	Timer timer = new Timer(2000, new ActionListener() {
  		public void actionPerformed(ActionEvent e) {
  			if (isFieldSet) {
  				textField.setText("");
  			} else {
  		        textField.setText(String.valueOf(System.currentTimeMillis()));
  			}
  			isFieldSet = !isFieldSet;
  		}
  	});
  
  	public FillAndEmptyTextFieldOnIntervalExample() {
  		super("FillAndEmptyTextFieldOnIntervalExample");
  		setDefaultCloseOperation(EXIT_ON_CLOSE);
  
  		textField = new JTextField(20);
  		add(textField);
  
  		timer.start();
  
  		pack();
  		setVisible(true);
  	}
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) {
  		new FillAndEmptyTextFieldOnIntervalExample();
  	}
  
  }
Der SwingTimer fuehrt die Action im EventDispatchThread aus ... der java.util.Timer nicht...

Gruss Tom
 
sj41 hat gesagt.:
hi, probier mal nach dem setText(), repaint() aufzurufen. vielleicht klappts ja dann.

Hi, habs versucht, aber ich erhalte immer noch ein leeres Textfeld.

Mein Code war jetzt

Code:
try
{
    textfeld.setText("blablaba");
    repaint();
   sleep(1000);
}
catch(Exception...)
{
}

textfeld.setText("");
 
Hi Thomas,
soweit ich dein Pgm verstanden habe, läuft es mit timer.start(); dann ewig ab! Wie erreicht man es, dass der Text genau einmal ausgegeben wird, und dann die weiteren Schritte im Pgm abgearbeitet werden?
 
Hi nochmal,
ich habe jetzt ein wenig rumgespielt, dabei ist mir etwas aufgefallen. Und zwar das zur Laufzeit immer erst der sleep ausgeführt wird und dann die anderen Anweisungen! Kann das sein
Also dass egal wo der sleep-Befehl in der Methode steht, dieser immer ERST vor den anderen
Anweisungen ausgeführt wird

Grüße
 

Neue Beiträge

Zurück