标题:能把JFrame设置成透明的么?
只看楼主
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
结帖率:90.91%
 问题点数:0 回复次数:5 
能把JFrame设置成透明的么?
能把JFrame设置成透明的么??

我想透过它看到它后面的东西。。。找了JDK帮助文档,不知道怎么搜索才好

或者能把它覆盖的那部分桌面截图做背景也行~~

求救~~
搜索更多相关主题的帖子: JFrame 
2009-12-31 18:59
baifenghan
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:258
专家分:952
注 册:2006-3-17
得分:0 
其实到不是很难,网上有很多的帖子啊,我给你找了一个,我编译了下,可以运行,自己读一下,改改,其实主要是下面思路:
1.利用Toolkit获得屏幕的size;
2.利用Robot获得当前窗口快照,也就是背景;
3.动态修改背景为快照即可;
import java.awt.Dimension;
import java.awt.*;

import javax.swing.*;

public class TransparentBackground extends JComponent {
 private JFrame frame;

 private Image background;

 public TransparentBackground(JFrame frame) {
  this.frame = frame;
  updateBackground();
 }

 public void updateBackground() {
  try {
   Robot rbt = new Robot();
   Toolkit tk = Toolkit.getDefaultToolkit();
   Dimension dim = tk.getScreenSize();
   background = rbt.createScreenCapture(new Rectangle(0, 0, (int) dim
     .getWidth(), (int) dim.getHeight()));
  } catch (Exception ex) {
   //p(ex.toString( ));
   ex.printStackTrace();
  }
 }

 public void paintComponent(Graphics g) {
  Point pos = this.getLocationOnScreen();
  Point offset = new Point(-pos.x, -pos.y);
  g.drawImage(background, offset.x, offset.y, null);
 }

 public static void main(String[] args) {
  JFrame frame = new JFrame(" Transparent Window ");
  TransparentBackground bg = new TransparentBackground(frame);
  bg.setLayout(new BorderLayout());
  JButton button = new JButton(" This is a button ");
  bg.add(BorderLayout.NORTH, button);
  JLabel label = new JLabel(" This is a label ");
  bg.add(BorderLayout.SOUTH, label);
  frame.getContentPane().add(BorderLayout.CENTER, bg);
  frame.pack();
  frame.setSize(150, 100);
  frame.show();
 }
}

上面的程序还有个不完美的地方就是,当窗口移动时候,并不能动态重新捕获快照,并修改背景,这个可以通过
重写画布的paint方法,调用repaint()方法去完善,自己试试。
2010-01-02 21:44
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
得分:0 
回复 2楼 baifenghan
谢谢哈~~
2010-01-03 16:24
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
标准 的类库是不支持的,但是JNA可以实现,JDK7也可能支持这个特性

可惜不是你,陪我到最后
2010-01-04 09:35
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
得分:0 
了解不少
2010-01-06 19:16
iLinxiao
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-26
得分:0 
这就是透明窗体的实现原理?
2010-07-22 10:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-294744-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.236350 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved