【问题标题】:JButton show tooltip programically: actionMap.get("postTip") is nullJButton 以编程方式显示工具提示:actionMap.get("postTip") 为 null
【发布时间】:2012-11-15 22:48:31
【问题描述】:

当我的 button2 获得焦点时,我需要以编程方式显示工具提示。 (我按 Tab 键作为初始焦点在按钮 1)

            JButton button = new JButton("Button 1");

            JButton button2 = new JButton("Button 2");
            button2.setToolTipText("tooltip2");
            button2.addFocusListener(new FocusListener());

我参考@camickr 的code

private class FocusListener extends FocusAdapter {
 public void focusGained(FocusEvent e)
 {
    JComponent component = (JComponent)e.getSource();
    Action toolTipAction = component.getActionMap().get("postTip");

但 toolTipAction 设置为空。

我已使用此代码打印了 ActionMap 的所有条目

        ActionMap actionMap = component.getActionMap();
        Object[] actionMapKeys = actionMap.allKeys();

        for (int i = 0; i < actionMapKeys.length; i++) {
            Object key = actionMapKeys[i];
            System.out.println(key.toString() + " : " + actionMap.get(key).toString());
        }

这就是它给我的东西

pressed : javax.swing.plaf.basic.BasicButtonListener$Actions@49cf9f
released : javax.swing.plaf.basic.BasicButtonListener$Actions@1de0b5e

如果我的 toolTipAction 为 null,如何调用此代码?

ActionEvent postTip = new ActionEvent(component, ActionEvent.ACTION_PERFORMED, "");
toolTipAction.actionPerformed(postTip);

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing tooltip jbutton focuslistener


【解决方案1】:

实际上我想在一些网络事件上显示工具提示,它有 与鼠标无关。但我已经开始专注于实验 通过 Tab 键获得

【讨论】:

  • @NikolayKuznetsov 您还可以查看this answer,尽管我没有任何实际的 MouseEvent(我们动态创建一个假的),但我会自动在组件上显示一个工具提示:@987654332 @
【解决方案2】:

您还可以尝试将工具提示管理器配置为在输入鼠标时立即显示工具提示的替代方法。

javax.swing.ToolTipManager.sharedInstance().setInitialDelay(0)

如果您希望仅对某些组件发生这种情况,则可以根据获得焦点的组件更改此值。

按下Ctrl+F1 时也会显示工具提示。因此,当您想显示工具提示时,您可以在按钮上使用java.awt.Robot 模拟 Ctrl+F1。

【讨论】:

  • 其实我想在一些网络事件上显示工具提示,这与鼠标无关。但我已经开始用 Tab 键获得焦点的实验
猜你喜欢
  • 1970-01-01
  • 2011-03-31
  • 2010-09-08
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
相关资源
最近更新 更多