0

挨拶、

setDissmissDelay()メソッドを複数回設定したい。しかし、特定の値を何度も設定することはできませんでした。また、無限ループを使用しようとしましたが、オーバーライドしようとしました (ToolTipManager コンストラクターはデフォルトの修飾子にあります)。e.getsource()コンソールでの印刷を見ることができるので、コードが正しく機能していることは確かです。私は誰かから尋ねられたこの問題を解決しようとしていました ( This Question )、解決中にこの時点で困惑しました。その背後にある理由は何ですか?値を設定できる場合、どのように設定できますか? これを達成する他の方法はありますか?

ここに私のコードスニペットがあります:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;

public class Hello {
    static JButton button;

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        button = new JButton("Hello World");
        button.setToolTipText("Its a tool tip Experiment!");
        frame.getContentPane().add(button);
        button.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseEntered(MouseEvent e) {

                if (e.getSource() == button) {
                    ActionListener tt = new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            ToolTipManager.sharedInstance().setDismissDelay(
                                    1000);
                            System.out.println(e.getSource());
                        }
                    };
                    new Timer(100, tt).start();
                }
            }
        });
        frame.pack();
        frame.setVisible(true);

    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

これを案内してください。

4

1 に答える 1

1

呼び出しsetDismissDelay()は、ツールチップが削除される前にディスプレイに表示される時間を示すグローバル設定です。現在のツールチップが削除されるまで、時間はリセットされません。リンクされた質問で示唆されているように、却下の遅延を設定すると、一度だけInteger.MAX_VALUE、トリックを実行する必要があります。

于 2012-12-11T17:43:41.417 に答える