25 Stimmen

Abgerundeter Swing JButton mit Java

Nun, ich habe ein Bild, das ich als Hintergrund für eine Schaltfläche (oder etwas ähnliches) verwenden möchte. Das Problem ist, dass dieses Bild ist rund, so muss ich dieses Bild, ohne Grenzen, etc. zeigen.

Die JComponent, die diese Schaltfläche enthält, hat einen benutzerdefinierten Hintergrund, so dass die Schaltfläche wirklich nur das Bild anzeigen muss.

Nach einer Google-Suche konnte ich das nicht erreichen. Ich habe alles Folgende versucht, aber ohne Erfolg:

button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setOpaque(true);

Und nachdem ich das Symbol auf den Hintergrund gemalt habe, malt die Schaltfläche es zwar, hat aber einen hässlichen grauen Hintergrund mit Rändern usw. Ich habe auch versucht, ein JLabel und einen JButton zu verwenden. Und ein ImageIcon darauf zu malen, aber wenn der Benutzer die Größe ändert oder das Fenster minimiert, verschwinden die Icons!

Wie kann ich das beheben?

Ich muss nur ein Bild auf eine JComponent malen und abrunden und auf Klicks darauf warten...

1voto

Luffy Punkte 1297

Sie können Folgendes versuchen. Es funktioniert gut für mich, und ich habe auch das gleiche Problem mit der Schaltfläche konfrontiert.

// Jbutton
JButton imageButton = new JButton();

// Buffered Icon
BufferedImage buttonIcon = null;

try {
    // Get the image and set it to the imageicon
    buttonIcon = ImageIO.read(getClass().getClassLoader().getResource("images/login.png"));
}
catch(Exception ex) {

}

// Set the image icon here
imageButton = new JButton(new ImageIcon(buttonIcon));
imageButton.setBorderPainted(false);
imageButton.setContentAreaFilled(false);
imageButton.setFocusPainted(false);
imageButton.setOpaque(false);

0voto

Bombe Punkte 77831

Die Deckkraft sollte auf false gesetzt werden, also

button.setOpaque(false);

könnte bereits das sein, was Sie wollen.

-1voto

Reeba Babu Punkte 1

Sie können einen leeren Rahmen um die Schaltfläche wie folgt erstellen:

button.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X