Java - color transparente

 
Vista:

color transparente

Publicado por soncillo (13 intervenciones) el 18/05/2005 18:53:21
Quiero hacer una aplicacion con una foto de fondo, y quiero que los componentes que ponga encima de ella(botones, areas , etiquetas,...) tengan de backgroung un color transparente para que se vea la imagen, pero no lo consigo. He probado poniendo en alpha a 0 y el valor de transparencia bitmask (segun la documentacion asi seria transparente) tambien he probado heredando de componentes j y poniendo el setOpaque a false, pero nada de esto fuciona,
Alguien sabe como hacerlo??
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:color transparente some Test

Publicado por sergey (13 intervenciones) el 19/05/2005 17:29:30
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;

/**
* Tool class.
*/
public class PaintTest extends JFrame {
private ImagePane imagePane;

public PaintTest() {
setTitle("Transparency test");
Container contentPane = getContentPane();

// Your image here!!!
imagePane = new ImagePane(new File("c:\\test.jpg"));
contentPane.add(imagePane);

imagePane.add(new JButton("Test"), BorderLayout.SOUTH);
imagePane.add(new TransparentButton(), BorderLayout.NORTH);
}

public static void main(String[] args) {
final JFrame frame = new PaintTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// some small hack try too comment next line //
// bad redraw :(
frame.addMouseMotionListener(new PaintTest().new MyMouseMotionListener());

frame.pack();
frame.setVisible(true);
}

class MyMouseMotionListener extends MouseMotionAdapter {
public void mouseMoved(MouseEvent e) {
e.getComponent().repaint();
}
}
}

/**
* Just a panel with the image inside
*/
class ImagePane extends JPanel {
private File imageFile;

private BufferedImage image;

ImagePane(File imageFile) {
// Image path
this.imageFile = imageFile;
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public Dimension getPreferredSize() {
return new Dimension(image.getWidth(), image.getHeight());
}

public boolean isOpaque() {
return true;
}

protected void paintComponent(Graphics g) {
// opaque, no need super.paintComponent();
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(image, null, 0, 0);
}
}

/**
* Small transparent button
*/
class TransparentButton extends JButton {
public TransparentButton() {
super();
setText("Transparent test");
}

protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;

// Main part try too play with rule and alpha
int rule = AlphaComposite.SRC_OVER;
float alpha = 0.5f;
g2.setComposite(AlphaComposite.getInstance(rule, alpha)); //!!!

super.paintComponent(g2);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar