use*_*339 7 java swing tooltip jtreetable
我有一个JTreeTable并且已成功实现了MouseMotionListener一个只要鼠标位于其中一个单元格上就显示工具提示.但是,单击单元格时,工具提示不会显示.我已经尝试过几样的事情,例如在事件mouseClicked和mouseReleased事件上设置文本,但这不起作用.我发现这个代码 -
Action toolTipAction = treeTable.getActionMap().get("postTip");
if(toolTipAction != null){
ActionEvent postTip = new ActionEvent(treeTable,ActionEvent.ACTION_PERFORMED, "");
toolTipAction.actionPerformed(postTip);
}
Run Code Online (Sandbox Code Playgroud)
在mouseReleased方法中使用,它确实使用tooltip popup,但它然后处于错误的位置.所以接下来我尝试重写getTooltipLocation方法JTreeTable,这对mouseMoved事件很好,但不会用上面的方法调用.任何人都可以阐明如何做到这一点?
谢谢安迪
cam*_*ckr 11
您可以使用以下方法显示工具提示(稍有延迟).然后您可以覆盖getToolTipLocation()方法,因为现在将生成MouseEvent:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ToolTipOnRelease extends JPanel
{
public ToolTipOnRelease()
{
JLabel label = new JLabel( "First Name:" );
add( label );
JTextField textField = new JTextField(15);
add( textField );
MouseListener ml = new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
JComponent component = (JComponent)e.getSource();
component.setToolTipText("Mouse released on: " + component.getClass().toString());
MouseEvent phantom = new MouseEvent(
component,
MouseEvent.MOUSE_MOVED,
System.currentTimeMillis(),
0,
0,
0,
0,
false);
ToolTipManager.sharedInstance().mouseMoved(phantom);
}
};
label.addMouseListener( ml );
textField.addMouseListener( ml );
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("ToolTipOnRelease");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new ToolTipOnRelease() );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
org.apache.jorphan.gui.JTreeTable 扩展 javax.swing.JComponent javax.swing.JComponent#setToopTipText() 不起作用?我确实意识到您想使用 Action 但用于工具提示?当多个 UI 操作需要共享它时,我会使用 Action。
| 归档时间: |
|
| 查看次数: |
9927 次 |
| 最近记录: |