[java] swing JButton afronden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hoi

Ik wil graag ronde buttons maken van JButtons.
Dat is niet zo'n probleem, dat kan prima met:

code:
1
2
3
4
        btnInformatie = new JButton("Speel de film af");
        btnInformatie.setBorder(new RoundedBorder(roundButtonRadius));
        btnInformatie.setForeground(Color.black);
        getContentPane().add(btnInformatie);


maar ik krijg nu dit effect:

rounded jbutton

Tsja als je voorgrond en achtergrond anders zijn is dat wel een beetje jammer. Nu kan ik welliswaar eerst een rectangle tekenen en daarna die ovaal, maar dat is ook niet heel mooi.

Weet iemand hier een handige oplossing/klasse voor binnen swing?

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • 0xDEADBEEF
  • Registratie: December 2003
  • Niet online

"Religion is an insult to human dignity. With or without it you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." - Steven Weinberg


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Dat klopt maar dan is de button zelf gelijk aan de achterkant.
Het gaat mij er wel om dat de foreground van de button een afwijkende kleur heeft, maar de hoekjes wel netjes zijn.

In het screenshot in de startpost zie je dat de foreground buiten de afgeronde hoekjes om door loopt, dat was meer het issue.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Ik gok dat het false zetten van setOpaque() dit verhelpt:
http://download.oracle.co...ml#setOpaque%28boolean%29

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hoi,

nee dat werkt niet, ik krijg dan de achtergrondkleur, helaas.

Mijn huidige code
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class RoundButton extends JButton {

    private static final long serialVersionUID = 1810930820744836429L;
    private final int roundButtonRadius = 30;

    public RoundButton(String s) {
        super(s);
        this.setFont(Settings.getFont());
        this.setBorder(new RoundedBorder(roundButtonRadius));
        this.setBackground(Settings.getOranje());
        this.setForeground(Color.black);
        this.setContentAreaFilled(true);
        this.setOpaque(false);
    }
}
De achtergrondkleur is netjes oranje (op een groen jpanel).
Als ik setOpaque(true) doe klopt dat prima maar zit ik met die hoekjes.

Als het false is blijft de achtergrondkleur van de Button groen.

Maw: goed plan maar niet werkend.

[ Voor 15% gewijzigd door Boudewijn op 13-06-2011 21:11 ]

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 09:12

NetForce1

(inspiratie == 0) -> true

Zelf implementeren in #paintComponent lijkt de way to go, ik heb er ook ooit wel eens een gemaakt, maar daar kan ik nu niet bij helaas. Hier zit wel wat tussen volgens mij: http://www.google.nl/sear...rs&aq=f&aqi=g-L1&aql=&oq=

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Zou het misschien een eigenschap zijn die je op de RoundedBorder moet zetten of implementeren? RoundedBorder is geen onderdeel van de Java API, dus ik kan er verder niks over vinden.
Pagina: 1