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 を設定しても、ToolTip は再度有効にならず、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 に答える