Java JButton以编程方式显示工具提示:actionMap.get(“postTip”)为空
当我的按钮2获得焦点时,我需要通过编程显示它的工具提示。我按Tab键,作为按钮1的初始焦点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
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)