Java JButton以编程方式显示工具提示:actionMap.get(“postTip”)为空

Java JButton以编程方式显示工具提示:actionMap.get(“postTip”)为空,java,swing,tooltip,jbutton,focuslistener,Java,Swing,Tooltip,Jbutton,Focuslistener,当我的按钮2获得焦点时,我需要通过编程显示它的工具提示。我按Tab键,作为按钮1的初始焦点 JButton button = new JButton("Button 1"); JButton button2 = new JButton("Button 2"); button2.setToolTipText("tooltip2"); button2.addFocusListener(new Focus

当我的按钮2获得焦点时,我需要通过编程显示它的工具提示。我按Tab键,作为按钮1的初始焦点

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

            JButton button2 = new JButton("Button 2");
            button2.setToolTipText("tooltip2");
            button2.addFocusListener(new FocusListener());
我指的是@camickr

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());
        }
那么,如果我得到toolTipAction null,我如何调用此代码呢


您还可以尝试另一种方法,将工具提示管理器配置为在输入鼠标时立即显示工具提示

javax.swing.ToolTipManager.sharedInstance().setInitialDelay(0)
如果只希望某些组件发生这种情况,则可以根据获得焦点的组件更改此值


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

您还可以尝试另一种方法,配置工具提示管理器,以便在输入鼠标时立即显示工具提示

javax.swing.ToolTipManager.sharedInstance().setInitialDelay(0)
如果只希望某些组件发生这种情况,则可以根据获得焦点的组件更改此值

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


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

使用JWindow未修饰的JDialog或JLabel代替工具提示,例如JLabel和JLabel

您可以将此容器放置到鼠标光标位置,或指向可见的GUI,以保持绝对坐标

标准可能很烦人,请看


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

使用JWindow未修饰的JDialog或JLabel代替工具提示,例如JLabel和JLabel

您可以将此容器放置到鼠标光标位置,或指向可见的GUI,以保持绝对坐标

标准可能很烦人,请看


实际上,我想显示一些网络事件的工具提示,这与鼠标无关。但我已经开始了用Tab键获得焦点的实验,实际上我想在一些网络事件上显示工具提示,这与鼠标无关。但我已经开始用Tab键获得的专注力进行实验。要更快地获得更好的帮助,请发布。要更快地获得更好的帮助,发布一个。@NikolayKuznetsov您还可以查看我在组件上自动显示工具提示的位置,尽管我没有任何实际的MouseEvent,但我们动态创建了一个假的:ToolTipManager.sharedInstance.mouseMoved new MouseEventcomponent,-1,System.currentTimeMillis,0,locationOnComponent.x,locationOnComponent.y,locationOnScreen.x,locationOnScreen.y,0,false,0@NikolayKuznetsov您还可以看看我在组件上自动显示工具提示的位置,尽管我没有任何实际的MouseEvent,但我们动态创建了一个假的:ToolTipManager.sharedInstance.mouseMoved new MouseEventcomponent,-1,System.currentTimeMillis,0,locationOnComponent.x,locationOnComponent.y,locationOnScreen.x,locationOnScreen.y,0,false,0;
javax.swing.ToolTipManager.sharedInstance().setInitialDelay(0)