初识JWindow

在swing中,JComponent提供了setToolTipText(String)方法来注册控件所要显示的工具提示,然而,Tips的效果并不理想:

1 迟缓:tips显示速度慢,光标移至控件上之后需要过一会才会显示tips;

2 不稳定:当tips显示之后,即使不移动光标,tips也会在显示一会儿之后自动消失;

3 不支持换行符:tips内容如有换行符,会被空格符替换,因此,要让tips显示换行符,你必须将tips内容转为html格式。


为了改善以上不足,意味着你必须重写setToolTipText(String)方法,而我的做法是,使用JWindow+MouseEvent(mouseEntered、mouseExited、mouseOver)来代替setToolTipText(String)。事实上,使用JWindow之后,你将获得极大的自由,tips效果将完全受掌控。


需要注意的是,有时候你会发现JWindow无法获取焦点(实际上tips也是不能获取焦点的,这正好完完全全的模拟了tips),而在一些特殊的使用需求中,你可能需要JWindow能够获取焦点,如何解决这一问题呢。问题在于,在构建JWindow对象时,只有向其提供有效的所有者owner(Frame、Window),并且Owner可见(visible),JWindow才能获取焦点。


以下是JWindow的API描述:

public class JWindow
   
   
    
    extends 
    
    Window
   
   
   
   
    
    implements 
    
    Accessible, 
    
    RootPaneContainer
   
   

JWindow 是一个容器,可以显示在用户桌面上的任何位置。它没有标题栏、窗口管理按钮或者其他与 JFrame 关联的修饰,但它仍然是用户桌面的“一类居民”,可以存在于桌面上的任何位置。

JWindow 组件包含一个 JRootPane 作为其仅有的子组件。contentPane 应为 JWindow 的所有子窗口的父窗口。作为一个便捷的 add 及其变体,remove 和 setLayout 已被重写并根据需要转发到 contentPane。这意味着您可以写入:

       window.add(child);
 
该子窗口也被添加到 contentPane。 contentPane  将始终为非  null 。尝试将其设置为  null  将导致  JWindow  抛出异常。默认的  contentPane  将在其上设置  BorderLayout  管理器。有关添加、删除和设置  JWindow  的  LayoutManager  的详细信息,请参阅  RootPaneContainer

有关 contentPaneglassPane 和 layeredPane 组件的完整描述,请参阅 JRootPane 文档。

在多屏幕环境中,可以在不同的屏幕设备上创建 JWindow。请参阅 Window 以获取更多信息。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值