Wie kann man Tooltips konfigurieren?

Zur Konfiguration von Tooltips stellt Java eine Klasse ToolTipManager bereit. Sie ermöglicht u.a. auch die Steuerung der mit Tooltips verbundenen Zeiten.

ToolTipManager ist ein Singleton das mit sharedInstance() instanziert wird und dessen Eigenschaften somit anwendungsweite Gültigkeit besitzen.
Das Beispiel demonstriert die Anwendung von vier Methoden der Klasse.

setInitialDelay() Bestimmt die Zeit in Millisekunden, zwischen der Registrierung der Tooltip-Aktivierung, also üblicherweise dem Überfahren der mit einem Tooltip versehenen Komponente, und der Erscheinung des Tooltips.
setDismissDelay() Setzt die Zeitspanne zwischen dem Erscheinen und dem selbstständigen Schließen des Tooltips.
setReshowDelay() Wird eine Komponente, deren Tooltip aktiviert wurde, während der Anzeige mit der Maus verlassen und sofort wieder besucht, so wird der Tooltip ebenfalls sofort wieder angezeigt. Ein initial delay wird nicht eingehalten. Die Methode legt die Zeit in Millisekunden fest, die vergehen muss, bis bei neuerlicher Aktivierung eines Tooltips der durch initial delay definierte Zeitraum wieder eingehalten wird.
unregisterComponent() Meldet eine Komponente von der Tooltip-Anzeige (und nicht nur von den Einstellungen des Managers) ab.
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;

public class TooltipKonfigurieren {

    public TooltipKonfigurieren() {
        init();
    }

    private void init() {
        
        JPanel panel = new JPanel(new GridLayout(2, 2, 25, 25));
        JLabel einsL = new JLabel("Brough Superior");
        einsL.setToolTipText(getTT(1));
        JLabel zweiL = new JLabel("Vincent");
        zweiL.setToolTipText(getTT(2));
        JLabel dreiL = new JLabel("A.J.S.");
        dreiL.setToolTipText(getTT(3));
        JLabel vierL = new JLabel("Norton");
        vierL.setToolTipText(getTT(4));
        
        ToolTipManager ttm = ToolTipManager.sharedInstance();
        ttm.setInitialDelay(3000);
        ttm.setDismissDelay(10000);
        ttm.setReshowDelay(2000);
        ttm.unregisterComponent(dreiL);
        
        panel.add(einsL);
        panel.add(zweiL);
        panel.add(dreiL);
        panel.add(vierL);
        JFrame frame = new JFrame();
        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Tooltip konfigurieren");
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private String getTT(int tt) {
        switch (tt) {
        case 1:
            return "<html>
                    <h1>Modelle</h1>
                    <ul>
                    <li>SS80</li>
                    <li>SS100</li>
                    <li>Dream</li>
                    </ul>
                    </html>";
        case 2:
            return "1928 - 1955";
        case 3:
            return "Albert John Stevens";
        case 4:
            return "<html>
<img src='"+ getClass().getResource("/img/Norton_Manx_200.png") + "'>
                </html>";
        default:
            return "";
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new TooltipKonfigurieren());
    }
}

Das Beispiel zeigt einen JFrame mit vier JLabel, die jeweils einen Tooltip zugewiesen bekommen. Dies kann, wie hier demonstriert, auch als HTML-Text geschehen.

Nach Erzeugen des ToolTipManager werden durch die o.a. Methoden der inititial delay, der dismiss delay und der reshow delay gesetzt. Zur Demonstration wird dem dritten Label zudem die Tooltipanzeige wieder durch unregisterComponent() entzogen.

Tooltip mit Bild