使用JDK7,用的Swing包。思路大致是,获取屏幕分辨率,创建一个与屏幕等大的JFrame,设置其顶部控制条消失、位于所有窗口上方,并将其背景设为全透明。然后创建一个JPanel,这就是显示出来的悬浮窗。我的JPanel内部还含有一个JLabel,加载了一张悬浮窗图片(ImageIcon)。问题:1.程序运行时,如何使任务栏中 应用程序区 上的图标消失,并使图标出现在托盘区?
2.如何改变JPanel的位置(通过改变坐标的方式)?
3.我是使用PNG格式来使图片透明的,是否有办法直接改变ImageIcon(或JPanel/JLabel)的透明度?
4.在显示或隐藏一个组件/一张图片的时候,能否使其淡入、淡出(以渐变的方式显示/消失)?有任何一个/半个问题知道答案的,都欢迎回答。只要答案有用就给分。

解决方案 »

  1.   

    记得用JFrame是不行的,任务栏无法隐藏,但可以用JWindow,类似于:
            JWindow wnd = new JWindow();
            wnd.add(new JLabel("Hello"));
            wnd.setSize(200,100);
            wnd.setVisible(true);
    你就能看到效果了,而且任务栏没有信息。然后托盘区要用另一种套路,而且是Java1.6才支持,具体可以Google这个类:SystemTray
      

  2.   

    2.如何改变JPanel的位置(通过改变坐标的方式)?
    可以用绝对定位布局,也就是 Null Layout
    如果一个容器使用绝对布局的话,那么其中的组件要调用setBounds()方法以确定在哪个位置显示组件,否则组件将不显示。方法很简单:setLayout(null);不过确实非常不推荐,如果实在复杂,用GridLayout一般都能解决问题。
      

  3.   

    谢谢,我会试试的。
    原本以为第二个问题最容易,没想到有人把第一个答上来了。HAHA
      

  4.   

    原来如此,我之前是用了setLayout(null),用了add后元素不显示= =!
    非要用setContentPane才显示,原来是没有setBounds。
    实际上这个JPanel是要响应鼠标拖动事件的,应该只有用坐标的方式才能实现吧,不知GridLayout能不能办到。我还是就用绝对布局的好。之前没用过JAVA界面相关的类,第一次用摸不着北,呵呵。
      

  5.   

    3、4 不太熟悉,帮不了你了。不过4肯定是要自己写代码实现的,Swing肯定不提供缺省支持。也许SWT有,就是Eclipse用的那套图形库。