3

在 JOptionPane.showMessageDialog("Some Text"); 已显示,工具提示已禁用,我不知道如何重新启用它们。这是一些演示问题的代码:

import java.awt.*; 
import java.awt.event.*;
import javax.swing.*;

public class ToolTipError extends JPanel{ 
  JButton button;

  public ToolTipError() {
    button = new JButton("ToolTipHere"); 
    button.setToolTipText("This is Java! There is no help");

    button.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        buttonActionPerformed(evt);
      }
    });

    add(button); 
  } 

  void buttonActionPerformed(ActionEvent env) {

    System.out.println("Button pushed."); //TEST

    JOptionPane.showMessageDialog(null, "This disables ToolTips!");

    // This does not re-enable the tool tip:
    button.setToolTipText("This is Java! There is no help");

    // Nor does this:
    ToolTipManager.sharedInstance().setEnabled(true);
 }

  void start() {
    //Create and set up the window.
   JFrame frame = new JFrame("ToolTipError");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Create and set up the content pane.
    ToolTipError newContentPane = new ToolTipError();
    newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    ToolTipError tte = new ToolTipError();
    tte.start();
  }
} 

请注意,在显示对话框后设置 ToolTipText 不会重新启用 ToolTips,也不会在 ToolTipManager 中重新启用它们。

请注意,如果您在屏幕上移动窗口,工具提示会神奇地再次开始工作!?!

如果您想尝试一下,上面的代码应该为您编译“开箱即用”。

提前致谢!

4

1 回答 1

2

您的错误是代码行中的简单拼写错误

Frame frame = new JFrame("ToolTipError");

如果您使用,可以正常工作

JFrame frame = new JFrame("ToolTipError");

如上所述的编辑适用于我 JDK6/7、WinXP/7

import java.awt.event.*;
import javax.swing.*;

public class ToolTipError extends JPanel {

    private static final long serialVersionUID = 1L;
    private JButton button;

    public ToolTipError() {
        button = new JButton("ToolTipHere");
        button.setToolTipText("Press the button !");
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                System.out.println("Button pushed.");
                JOptionPane.showMessageDialog(button.getParent(), "This disables ToolTips!");
                button.setToolTipText("This is Java! There is no help");
            }
        });
        add(button);
    }

    void start() {
        ToolTipManager ttm = ToolTipManager.sharedInstance();
        ttm.setInitialDelay(0);
        ttm.setDismissDelay(10000);

        ToolTipError newContentPane = new ToolTipError();
        newContentPane.setOpaque(true);

        JFrame frame = new JFrame("ToolTipError");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(newContentPane);
        frame.pack();
        frame.setLocation(150, 150);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                ToolTipError tte = new ToolTipError();
                tte.start();
            }
        });
    }
}
于 2012-07-08T13:43:15.907 回答