java button mit transparentem Bild?
hi ich möchte einen Button in java machen und dem ein Bild zuweisen welches zum teil transparent ist also mit alpha
aber aus einem mir unbekannten Grund ist dort wo etwas transparent sein soll dir färbe einfach weiß aber auch nicht komplett denn oben und unten ist ein kleiner transparenter Rand
sind auf macOS aber haben schon border null, areafilled false, opaque fase und background null
weiß jemand wie ich es machen kann?
2 Antworten
Öffne das Bild zunächst in einem Bildbearbeitungsprogramm (wie Gimp), welches mit Alphakanälen umgehen kann. In diesem wäre zu prüfen, ob das Bild tatsächlich an allen notwendigen Stellen transparent ist. Speichere das Bild zudem in einem Format wie PNG, welches Transparenz sicher unterstützt.
Zum Zeichnen in Swing (ich gehe davon aus, dass du Swing benutzt), wäre eine eigene Komponente praktisch, die den Button zeichnet.
Beispiel:
public class TransparentButton extends JButton {
private Image image;
public TransparentButton(String imagePath) throws IOException {
image = ImageIO.read(new File(imagePath)); // better: load image by resources ...
}
@Override
public void paintComponent(Graphics graphics) {
graphics.drawImage(image, 0, 0, 200, 200, null);
}
}
Diesen kann man dann dem Frame zuordnen:
frame.setLayout(new FlowLayout());
frame.getContentPane().setBackground(Color.YELLOW); // showcase
try {
JButton button = new TransparentButton("path/to/image");
button.setPreferredSize(new Dimension(200, 200));
button.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
frame.add(button);
}
catch (IOException ex) {
ex.printStackTrace();
}
Eventuell hat dein Bild nicht an allen Stellen Transparenz.