Erstellen Sie eine einfache message-box, die verschwindet nach ein paar Sekunden in Java

Ich Frage mich, was ist der beste Ansatz, um ein JOptionPane Stil plain message-box verschwinden, nachdem angezeigt wird für eine festgelegte Anzahl von Sekunden.

Bin ich denken, um Feuer auf einem separaten thread (mit einem timer) aus dem Haupt-GUI-thread um dies zu tun, so dass die GUI tragen kann, auf die Verarbeitung anderer Ereignisse etc. Aber wie kann ich eigentlich die message-box in diesem separaten thread verschwinden und beenden Sie den thread richtig. Danke.

Edit: also das ist, was ich kommen mit, indem Sie die folgenden Lösungen, die unten gebucht

package util;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.Timer;

public class DisappearingMessage implements ActionListener
{
    private final int ONE_SECOND = 1000;

    private Timer timer;
    private JFrame frame;
    private JLabel msgLabel;

public DisappearingMessage (String str, int seconds) 
{
frame = new JFrame ("Test Message");
msgLabel = new JLabel (str, SwingConstants.CENTER);
msgLabel.setPreferredSize(new Dimension(600, 400));

timer = new Timer (this.ONE_SECOND * seconds, this);
//only need to fire up once to make the message box disappear
timer.setRepeats(false);
}

/**
 * Start the timer
 */
public void start ()
{
//make the message box appear and start the timer
frame.getContentPane().add(msgLabel, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null); 
frame.setVisible(true);

timer.start();
}

/**
 * Handling the event fired by the timer
 */
public void actionPerformed (ActionEvent event)
{
//stop the timer and kill the message box
timer.stop();
frame.dispose();
}

public static void main (String[] args)
{
DisappearingMessage dm = new DisappearingMessage("Test", 5);
dm.start();
}
}

Nun die Frage ist, dass, wie ich cam-erstellen Sie mehrere Instanzen dieser Klasse werden im Verlauf der Interaktion zwischen dem Benutzer und der Haupt-Benutzeroberfläche, Frage ich mich, ob die dispose () - Methode löscht alles richtig jeder Zeit. Sonst kann ich am Ende mit anwachsender viele redundante Objekte im Speicher. danke.

download.oracle.com/javase/6/docs/api/java/awt/..., soll ich das nehmen, dass alle beteiligten Instanzen in der message-box, die bereinigt werden?
Was macht Ihr profiler sagen?
... Methode finalize
könnten Sie das bitte näher erläutern?
trashgod (etwas verschlüsselt) Was macht Ihr profiler sagen? ... über die Methode finalize (oder detaillierter beschrieben in der API)

InformationsquelleAutor skyork | 2011-05-11

Schreibe einen Kommentar