ToolTipManager中的setDissmissDelay()方法未设置其值

时间:2012-12-11 16:58:05

标签: java swing timer awt

问候语,

我想多次设置setDissmissDelay()方法。但我无法一次又一次地将其设置为特定值。我也尝试使用无限循环,试图覆盖(ToolTipManager Constructor是默认修饰符)。我确信代码工作正常,因为我可以看到它在控制台中打印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();
            }
        });
    }
}

请指导我。

1 个答案:

答案 0 :(得分:1)

调用setDismissDelay()是一个全局设置,用于指示工具提示在删除之前应保留多长时间。它不会重置当前工具提示被删除之前的时间。正如您在链接问题中所建议的那样,一劳永逸地解除延迟,Integer.MAX_VALUE应该可以解决问题。