zeitgesteuerter, rahmenloser Hinweistext im Frame/Dialog

J

Java-Freak

Hallo,
meine Überschrift sagt es ja schon, weiß nicht genau wie ich es bennenen soll, versuche es mal zu erläutern..

Ich rufe in meiner Applikation ein integriertes Panel auf, in dem ich Daten eingeben kann.
Dieses Panel hat einen Button der nach 'ActionPerformed' die Eingaben validiert und anschließend in einer XML-Datei speichert.
Das funktioniert.ok

Als Erweiterung möchte ich (für eine bessere Usability) einen kurzen Hinweistext ausgeben. Das ganze soll zeitgesteuert für 2-3 Sekunden in einem rahmenlosen Frame/JDialog angezeigt werden:
+-----------------------+
|
| Daten gesichert |
|
+-----------------------+

Habe es wie folgt versucht:

In meinem Panel: public class BeispielPanel extends javax.swing.JPanel {

ist der Button mit Event hinterlegt: jButtonSpeichern.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {jButtonSpeichernActionPerformed(evt);}});

Im Event: private void jButtonSpeichernActionPerformed(java.awt.event.ActionEvent evt) {

rufe ich nach Abarbeitung und Validierung die HinweisKlasse (Frame-basierend) auf:

ViewHinweisGesichert loszeige = new ViewHinweisGesichert();
loszeige.setVisible(true);
try{ Thread.sleep(10000);
}catch (InterruptedException e){ e.printStackTrace();
}//catch
loszeige.setVisible(false);

Er macht dann folgendes:
Der Button bleibt für die eingestellten (und hier übertriebenen) 10 Sekunden in gedrückter Form aber es passiert (optisch) nichts weiter.


Code:
// Klasse ViewHinweisGesichert
import java.awt.Toolkit;

public class ViewHinweisGesichert extends javax.swing.JFrame {

	private javax.swing.JLabel jLabel1;
	private javax.swing.JPanel jPanel1;

public ViewHinweisGesichert() {
		initComponents();
		this.setSize(120, 40);
}//Konstruktor


private void initComponents() {
	jPanel1 = new javax.swing.JPanel();
	jLabel1 = new javax.swing.JLabel();

	setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
	setResizable(false);
	setUndecorated(true);

	jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
	jPanel1.setBackground(new java.awt.Color(255, 255, 255));
	jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
	jPanel1.setPreferredSize(new java.awt.Dimension(120, 40));

	jLabel1.setFont(new java.awt.Font("Dialog", 1, 12));
	jLabel1.setText("Daten gesichert");
	jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(15, 12, -1, -1));
		
	getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

	pack();
      }// Methode
}// class


Ist das überhaupt der richtige Ansatz?
Soll ich das anstatt Frame-, besser Dialog-gesteuert umsetzen?
Kann ich das überhaupt so umsetzen?
Bitte um Hilfe, Anregungen, Vorschläge!
 
Du benötigst einen neuen Thread, momentan legst Du den Hauptthread schlafen.

Also z.B. ganz quick and dirty:

Java:
new Thread() {
  public void run() {
    ViewHinweisGesichert loszeige = new ViewHinweisGesichert();
    loszeige.setVisible(true);
    try{ Thread.sleep(10000);
    }catch (InterruptedException e){ e.printStackTrace();
    }//catch
    loszeige.setVisible(false);
  }
}.start();
 
D A N K E !!

Ausprobiert und passt!
Mein erster Thread..
(upps, sorry matdacat) Mein erster integrierter Thread :)

Dachte das ich Threads noch nicht so schnell benötige, schon ist einer integriert.

Werde mich dann wohl doch ein wenig mehr damit beschäftigen.
 
Zurück