求Java中组件透明度的设置方法!
小弟最近在学Java,想对一个Panel实现透明度的渐变效果。在网上查阅很多资料后发现,好像都需要装额外的插件。。。我目前使用的jdk-6u21,哪位高人知道,在我已有的...
小弟最近在学Java,想对一个Panel实现透明度的渐变效果。在网上查阅很多资料后发现,好像都需要装额外的插件。。。我目前使用的jdk-6u21,哪位高人知道,在我已有的环境下应该用什么类库中的什么函数实现?请给小弟点拨一下!如果能配上简短的程序说明更好,万分感谢!
谢谢你在百忙之中帮我写程序,虽然这你的程序不能运行,但是我从你的程序中了解了你的意思,就是将普通绘图转化为2D绘图的思想。
非常感谢你啊!*_* 展开
谢谢你在百忙之中帮我写程序,虽然这你的程序不能运行,但是我从你的程序中了解了你的意思,就是将普通绘图转化为2D绘图的思想。
非常感谢你啊!*_* 展开
2个回答
展开全部
java swing中设置组件透明度的方法如下:
package src;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
private Image image = null;
public MyPanel(Image image) {
this.image = image;
}
//固定背景图片,允许这个JPanel可以在图片上添加其他组件
protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
测试JFrame
package src;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test extends JFrame{
JPanel jpanel;
JLabel jlabel;
JButton jbutton;
Image image=new ImageIcon("image/a.jpg").getImage();
ImageIcon labIma=new ImageIcon("image/a.jpg");
Test(){
this.setIconImage(image);
this.setTitle("hello");
init();
this.add(jpanel);
}
public void init(){//本方法里面有三种显示图片的方法,两个实现了在图片上添加按钮的功能
/*第一种方法 通过JLabel简单的设置图片
jpanel=new JPanel();
jlabel=new JLabel();
jlabel.setIcon(labIma);
jpanel.add(jlabel);
*/
/*第二种方法 这是实现在JLabel添加图片同时在上面添加按钮功能,注意它里面的jpanel不用显示的添加到JFrame中,因此上面构造函数中的this.add(jpanel)要注释掉
jpanel = (JPanel) this.getContentPane(); //从JFrame 里面创建一个JPanel
jpanel.setOpaque(false); //JPanel 透明模式
jlabel = new JLabel(labIma); //创建个带背景图片的JLabel
this.getLayeredPane().add(jlabel, new Integer(Integer.MIN_VALUE));
jlabel.setBounds(0, 0, labIma.getIconWidth(), labIma.getIconHeight());
jpanel.setLayout(new FlowLayout());
JButton jb = new JButton("我是按钮");
jpanel.add(jb);
*/
/*第三种方法 通过重写JPanel中的paintComponent方法设置背景图片,然后在jpanel上添加组件
//通过背景图片设置图片 注意MyPanel是自己定义的一个类
jpanel=new MyPanel(image);
jbutton=new JButton();
jbutton.setText("haha");
jpanel.add(jbutton);
*/
}
public static void main(String args[])
{
Test t=new Test();
t.setSize(400,400);
t.setVisible(true);
}
展开全部
如果认可,请您赏分60分,谢谢
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* @author Hardneedl
*/
class PanelComposite extends JFrame {
private static final Dimension minSize = new Dimension(300, 200);
private static final Dimension maxSize = new Dimension(1024, 768);
private static final Dimension preferredSize = new Dimension(600, 400);
public Dimension getMaximumSize() {return maxSize;}
public Dimension getMinimumSize() {return minSize;}
public Dimension getPreferredSize() {return preferredSize;}
public String getTitle() {return "Frame Title";}
private class CompositePanel extends JPanel {
private AlphaComposite cmp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1);
private float alpha;
private void setAlpha(float alpha) {
this.alpha = alpha;
if (isVisible()) paintImmediately(getBounds());
}
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d.setComposite(cmp.derive(alpha));
super.paintComponent(g2d);
}
}
PanelComposite() throws HeadlessException {
init();
doLay();
attachListeners();
}
private void init() {
}
private void doLay() {
Container container = getContentPane();
container.setLayout(null);
CompositePanel p = new CompositePanel();
p.setAlpha(.29f);
p.setBackground(Color.GREEN);
p.setBounds(10,10, 90, 90);
JButton b = new JButton("JBUTTON");
b.setBounds(20,20,100,40);
container.add(p);
container.add(b);
pack();
}
private void attachListeners() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new PanelComposite().setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* @author Hardneedl
*/
class PanelComposite extends JFrame {
private static final Dimension minSize = new Dimension(300, 200);
private static final Dimension maxSize = new Dimension(1024, 768);
private static final Dimension preferredSize = new Dimension(600, 400);
public Dimension getMaximumSize() {return maxSize;}
public Dimension getMinimumSize() {return minSize;}
public Dimension getPreferredSize() {return preferredSize;}
public String getTitle() {return "Frame Title";}
private class CompositePanel extends JPanel {
private AlphaComposite cmp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1);
private float alpha;
private void setAlpha(float alpha) {
this.alpha = alpha;
if (isVisible()) paintImmediately(getBounds());
}
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d.setComposite(cmp.derive(alpha));
super.paintComponent(g2d);
}
}
PanelComposite() throws HeadlessException {
init();
doLay();
attachListeners();
}
private void init() {
}
private void doLay() {
Container container = getContentPane();
container.setLayout(null);
CompositePanel p = new CompositePanel();
p.setAlpha(.29f);
p.setBackground(Color.GREEN);
p.setBounds(10,10, 90, 90);
JButton b = new JButton("JBUTTON");
b.setBounds(20,20,100,40);
container.add(p);
container.add(b);
pack();
}
private void attachListeners() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new PanelComposite().setVisible(true);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询