Toon posts:

[java] swing JButton afronden

Pagina: 1
Acties:

Onderwerpen


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online
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?

Ik ben verslaafd aan koken. Volg me op https://www.kookjunk.nl


  • 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


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online
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.

Ik ben verslaafd aan koken. Volg me op https://www.kookjunk.nl


  • 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

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online
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]

Ik ben verslaafd aan koken. Volg me op https://www.kookjunk.nl


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 10:03

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!"


  • 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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee