Ik heb een probleempje: ik moet een plaatje op een button laten verschijnen, maar mag geen gebruik maken van swing. Ik heb al in de API gezocht (wellicht niet goed genoeg, maar ik kon het niet vinden) en ook niet in andere topics. Wie kan mij helpen?
Je hebt in de api docs gekeken, maar kon daar image (een non swing class) niet vinden? En Graphics ook niet?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Mijn probleem is dat dat plaatje een gifje is en dat ik dus niet zelf mag gaan tekenen. Ik heb nog nooit met swing gewerkt, maar in topics kom ik alleen plaatjes tegen die op een JButton worden geplaatst. En JButton is volgens mij wel swing.
Verwijderd
Als het goed is bestaat er een library genaamd gjt (Graphic java Toolkit). Dit is een uitbreiding van de AWT en is uitgegeven door Sun zelf.
In deze library zit een ImageButton.
In deze library zit een ImageButton.
Er is in de AWT API geen nette manier om een Button van een plaatje te voorzien. Een zwak onderdeel van het ontwerp, als je 't mij vraagt. Met Swing is het weer wel mogelijk.
Zelf heb ik een dergelijke 'Button' gemaakt door een klasse te baseren op Component (waar Button ook op gebaseerd is). Vervolgens laadt ik het gewenste plaatje in de constructor, retourneer ik de grootte van het plaatje als minimum en preferred size en teken ik het plaatje in de paint methode; de update methode heb ik zo aangepast dat 'ie direct paint aanroept, aangezien het plaatje in mijn geval toch het hele component vult.
Nu heb ik feitelijk een component met een plaatje erop. Om 'm ook als Button te laten werken, heb ik mouse events aangezet en voer ik een methode uit als ik een mouse pressed event krijg.
Variaties hierop zijn natuurlijk mogelijk. Een nadeel is dat de nieuwe klasse geen Button 'is', en dus niet meegegeven kan worden aan methoden die een Button verwachten (al ken ik die niet).
Ik kan me in het bijzonder voorstellen dat je je een hoop werk kunt besparen door in plaats van met een Component te beginnen, een klasse te nemen die zelf al een plaatje kan weergeven.
Zelf heb ik een dergelijke 'Button' gemaakt door een klasse te baseren op Component (waar Button ook op gebaseerd is). Vervolgens laadt ik het gewenste plaatje in de constructor, retourneer ik de grootte van het plaatje als minimum en preferred size en teken ik het plaatje in de paint methode; de update methode heb ik zo aangepast dat 'ie direct paint aanroept, aangezien het plaatje in mijn geval toch het hele component vult.
Nu heb ik feitelijk een component met een plaatje erop. Om 'm ook als Button te laten werken, heb ik mouse events aangezet en voer ik een methode uit als ik een mouse pressed event krijg.
Variaties hierop zijn natuurlijk mogelijk. Een nadeel is dat de nieuwe klasse geen Button 'is', en dus niet meegegeven kan worden aan methoden die een Button verwachten (al ken ik die niet).
Ik kan me in het bijzonder voorstellen dat je je een hoop werk kunt besparen door in plaats van met een Component te beginnen, een klasse te nemen die zelf al een plaatje kan weergeven.
Pagina: 1