您的位置:首页 > 编程语言 > Java开发

SWING透明窗体,颜色渐变。

2014-05-06 12:38 369 查看
创建完全透明窗体,主要先了解以下步骤:

设置JFrame窗口完全透明:AWTUtilities.setWindowOpaque(frame, false);
设置JPanel窗口半透明: G2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
设置JPanel窗体是否透明透明:setOpaque(false);
设置JPanel的Paint颜色渐变使用:GradientPaint(0, 0, color, width, height, color1, false);
效果如下:


import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import com.sun.awt.AWTUtilities;

public class Test2 extends JPanel{

public Test2() {
// TODO 自动生成构造函数存根
this.setLayout(null);
this.setOpaque(false);
JButton button=new JButton("xxxxxxxx");
button.setBounds(0, 0, 100, 100);
this.add(button);
setBackground(Color.red);
}

private GradientPaint paint;

public Color color = Color.CYAN;

public Color color1 = Color.WHITE;

@Override
public void paint(Graphics g) {
// TODO 自动生成方法存根
Graphics2D g2 = (Graphics2D) g.create();
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
0.5f));
super.paint(g2);
int height = getHeight();
int width = getWidth();
setColor(color, color1, width, height);
g2.setPaint(paint);
g2.fillRoundRect(0, 0, this.getWidth() - 100, this.getHeight() - 100,
25, 25);
int[] x1={this.getWidth() - 200, this.getWidth() - 200+30,this.getWidth() - 200+60};
int[] y1={this.getHeight() - 100, this.getHeight() - 100,this.getHeight() - 100+60};
g2.drawPolyline(x1, y1, 3);
g2.fillPolygon(x1, y1, 3 );
}

private void setColor(Color  color, Color color1, int width, int height) {
paint = new GradientPaint(0, 0, color, width, height, color1, false);
}

public static void main(String[] args) {
JFrame frame=new JFrame() {

//			 @Override
//			 public void paint(Graphics g) {
//			 // TODO 自动生成方法存根  半透明
//			 Graphics2D G2=(Graphics2D) g.create();
//			 G2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
//			 0.5f));
//			 super.paint(G2);
//			 }

};;
frame.setUndecorated(true);
frame.add(new Test2());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(800,600));
AWTUtilities.setWindowOpaque(frame, false);
frame.setVisible(true);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息