JPanel Transparent und darauf JButtons legen

solsticepan

Grünschnabel
Hallo Leute,

habe folgendes Problem. Ich habe ein JPanel das einen Transparenten Hintergund hat erstellt
nun möchte ich über dieses Panel ein anderes Panel drüberlegen mit ein paar JButtons, und anschliessend in einen Frame darstellen. Soweit funktioniert auch alles aber leider werden die Buttons nicht richtig dargestellt, das heisst Sie sind sozusagen mitdurchsichtig , wenn ich dann mit der Maus drübergehe sind Sie richtig dargestellt....
hier mal der Code, dann könnt Ihr das vielleicht besser nachvollziehen



class Transparent extends JPanel {
private Image image ;
private BufferedImage buffer ;


Transparent() {
loadImage();
}

private void loadImage() {

image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("bilder/fc.jpg"));

if (image == null) {System.out.println("Fehler, kann bild nicht finden") ; }

System.out.println(image.toString()) ;
MediaTracker mt = new MediaTracker(this) ;

try {

mt.addImage(image, 0) ;
mt.waitForID(0) ;

}catch(InterruptedException er) {

}

int imgW = image.getWidth(this) ;
int imgH = image.getHeight(this) ;


buffer = new BufferedImage(imgW,imgH, BufferedImage.TYPE_INT_ARGB) ;
Graphics2D g2 = buffer.createGraphics() ;

g2.drawImage(image, 0,0,this) ;

g2.dispose() ;

}

protected void paintComponent(Graphics g) {


Graphics2D g2 = (Graphics2D) g;
Composite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.2f) ;
g2.setComposite(alpha) ;
Dimension size = getSize() ;


int imgW = image.getWidth(this) ;
int imgH = image.getHeight(this) ;
for (int row = 0 ; row < size.height ; row += imgH) {

for (int col = 0 ; col < size.width ; col += imgW) {
g2.drawImage(image, col,row,this) ;

}
}
super.paintComponent(g);
}
}


class ButtonMenu extends JPanel {

//code der die Buttons erzeugt

}


public class Main {


public static void main(String [] args ) {
//code der den frame erstellt
Transparent bg = new Transparent() ;
bg.add(new ButtonMenu() ) ;
frame.getContentPane.add(bg, BorderLayout.CENTER) ;
//weiterer code
}
}
 
Zuletzt bearbeitet:
Hallo solsticepan,

schau mal hier:

Code:
import java.awt.*;
import javax.swing.*;

public class TransparentPanel extends JPanel {

	ImageIcon a = new ImageIcon("images.jpg");

	public TransparentPanel() {
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);

		Graphics2D g2d = (Graphics2D) g;

		Composite oldComp = g2d.getComposite();

		Composite alphaComp = AlphaComposite.getInstance(
				AlphaComposite.SRC_OVER, 0.3f);

		g2d.setComposite(alphaComp);

		g2d.drawImage(a.getImage(), 0, 0, this.getWidth(), this.getHeight(),
				this);

		g2d.setComposite(oldComp);
	}

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

		TransparentPanel pan = new TransparentPanel();

		pan.add(new Buttonpanel());

		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(300, 300);
		f.add(pan);

		f.setVisible(true);
	}

	static class Buttonpanel extends JPanel {
		public Buttonpanel() {
			add(new JButton("eins"));
			add(new JButton("zwei"));
			add(new JButton("drei"));
			this.setOpaque(false);
		}
	}
}

Vg Erdal
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück