我需要在获得焦点时以编程方式显示我的button2的工具提示。 (我按Tab键作为按钮1的初始焦点)
JButton button = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
button2.setToolTipText("tooltip2");
button2.addFocusListener(new FocusListener());
我引用code @camickr
private class FocusListener extends FocusAdapter {
public void focusGained(FocusEvent e)
{
JComponent component = (JComponent)e.getSource();
Action toolTipAction = component.getActionMap().get("postTip");
但toolTipAction设置为null。
我已使用此代码打印了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);
答案 0 :(得分:2)
您还可以尝试使用其他方法配置工具提示管理器,以便在输入鼠标时立即显示工具提示。
javax.swing.ToolTipManager.sharedInstance().setInitialDelay(0)
如果您希望仅在某些组件上发生这种情况,那么您可以根据获得焦点的组件更改此值。
按下Ctrl+F1
时也会显示工具提示。因此,当您想要显示工具提示时,可以使用按钮上的java.awt.Robot
来模拟Ctrl + F1。
答案 1 :(得分:2)
确实我想在一些网络事件上显示工具提示 与鼠标无关。但我已开始重点实验 通过Tab键获得
使用JWindow
(未修饰的JDialog
)或JLabel
代替ToolTip
,JLabel
by @Guillaume Polet和{{3}的示例}}
您可以将此容器放置到Mouse Cursor
的位置或坚持绝对坐标,Point
到可见的GUI
标准可能(可能很烦人)请参阅here