怎样透明Javaqt 窗体透明

(完美)用JPanel实现窗口背景与透明,再加上组件_中华文本库
第1页/共2页
好不容易,真的,这个是完美的实现窗口背景,透明,无规则窗体的完美方法!!查了,看了不少网上的资料,终于给看到相关的,下面是我自己写的代码,(java入门不久,挺不容易的!!实现了也挺开心)
package com.
import java.awt.C
import java.awt.G
import java.awt.Graphics2D;
import java.awt.GridL
import java.awt.event.ActionE
import java.awt.event.ActionL
import javax.swing.*;
public class Test {
ImageIcon imageIcon =new ImageIcon("images/check.png");//images这个文件夹与项目下bin文件夹同目录
public Test() {
final JFrame f = new JFrame(); f.setBounds(500, 400, 400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setUndecorated(true);
//关键代码! 设置窗口无标题 com.sun.awt.AWTUtilities.setWindowOpaque(f, false);//关键代码! 设置窗体透明
}; p.setLayout(null); JButton b1=new JButton("exit"); b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
} System.exit(0);
.getHeight(), f);
JPanel p = new JPanel() {
public void paintComponent(Graphics g) {//重写这个方法
super.paintComponent(g);//继承超类绘制组件方法 Graphics2D gg=(Graphics2D)g;
if (imageIcon != null) {// 绘制背景
gg.drawImage(imageIcon.getImage(), 0, 0, f.getWidth(),
第1页/共2页
寻找更多 ""Java7 之透明和规则形状的窗口 - 开源中国社区
当前访客身份:游客 [
当前位置:
Java 7 为桌面应用开发带来了几个新的特性:
透明窗口,可根据不同的alpha值设置透明度
像素半透明,窗口部分透明化
各种规则形状的窗口,可创建例如圆形、椭圆等各种形状的窗口
接下来我们给出一些示例代码来演示这些新的特性:
1. 透明窗口
可以通过 GraphicsDevice 类来判断是否支持透明窗口,代码如下:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
if (ge.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
System.out.println("Window translucency isn't supported on your system. ");
下面是一个透明窗口的例子:
package com.wicht.java7.
import javax.swing.*;
import javax.swing.event.ChangeE
import javax.swing.event.ChangeL
import java.awt.*;
public class TranslucentWindow extends JFrame {
public TranslucentWindow() {
super("Simple Translucency Demo");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getRootPane().setDoubleBuffered(false);
setOpacity(0.5f);
setLocationRelativeTo(null);
setVisible(true);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
if (ge.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
new TranslucentWindow();
执行后的截图如下:
2. 点阵半透明
package com.wicht.java7.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionE
import java.awt.event.ActionL
public class GriddedTranslucentWindow extends JFrame {
public GriddedTranslucentWindow() {
super("Java 7 Per Pixel Translucency");
setSize(300, 320);
getContentPane().setLayout(new GridLayout(4, 4));
for(int i = 0; i & 16; i++){
add(new AlphaPanel(255 - i * 12));
setBackground(new Color(0, 0, 0, 0));
setLocationRelativeTo(null);
setVisible(true);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
if (ge.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
new GriddedTranslucentWindow();
private class AlphaPanel extends JPanel {
private AlphaPanel(int alpha) {
setBackground(new Color(0, 0, 255, alpha));
执行后截图:
3. 规则形状窗口
package com.wicht.java7.
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralP
public class ShapedWindow extends JFrame {
public ShapedWindow() {
super("Shaped Window");
setUndecorated(true);
setSize(new Dimension(200, 300));
Polygon polygon = new Polygon();
polygon.addPoint(0, 200);
polygon.addPoint(100, 0);
polygon.addPoint(200, 200);
Ellipse2D.Double theCircle = new Ellipse2D.Double(0, 100, 1.0*200, 1.0*200);
GeneralPath path = new GeneralPath();
path.append(polygon, true);
path.append(theCircle, true);
setShape(path);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
add(Box.createHorizontalGlue());
JLabel label = new JLabel("Shaped window");
label.setForeground(Color.white);
add(label);
add(Box.createHorizontalGlue());
getContentPane().setBackground(Color.blue);
setLocationRelativeTo(null);
setVisible(true);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
if (ge.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {
new TranslucentShapedWindow();
执行后截图:
这些特性将为 Java 开发桌面应用带来更丰富的效果,非常棒。
共有1个评论
<span class="a_vote_num" id="a_vote_num_
win7 eclispe Indigo 测试报错,需 JFrame.setDefaultLookAndFeelDecorated(true);设置成java外观
更多开发者职位上
有什么技术问题吗?
红薯的其它问题透明窗体java实现
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Swing 透明窗体实现
今天在里回答问题的时候,网友问了个问题,swing怎样实现窗口透明。
这里需要用到第三方的jna。
jna-3.3.0-platform.jar包:点击打开链接
废话先少说了,先把代码贴出来:
import java.awt.C
import java.awt.GradientP
import java.awt.G
import java.awt.Graphics2D;
import javax.swing.JF
import javax.swing.JP
import com.sun.jna.platform.WindowU
public class JFrameBackground {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500, 500, 300, 300);
System.setProperty(&sun.java2d.noddraw&,&true&);
WindowUtils.setWindowAlpha(frame, 0.5f);
JPanel pane = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.fill3DRect(10, 10, 100, 100, true);
frame.setContentPane(pane);
frame.setVisible(true);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Java设置窗体背景图像_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java设置窗体背景图像
上传于||文档简介
&&告&#8203;诉&#8203;你&#8203;两&#8203;种&#8203;方&#8203;法&#8203;设&#8203;置&#8203;窗&#8203;体&#8203;的&#8203;背&#8203;景&#8203;图&#8203;像
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢

我要回帖

更多关于 java透明窗体 的文章

 

随机推荐