JButton mit PNG Icon und Alpha Kanal auf JPanel mit Background und Alpha Kanal

  • Hallo Leute

    habe ein Problem mit meinen JButtons. Habe alle Effekte von Swing soweit entfernt und nur noch die Icons pressed etc. drauf. Die Icons sind aber nicht rechteckig. Deshalb hab ich png Bilder mit alpha Kanal genommen. Klappt soweit auch super gut.
    Wenn ich jetzt allerdings auf den Button draufklicke, zeichnet der den neu (mit dem Pressed-Icon). Er zeichnet allerdings die Pixel nicht vollkommen neu (von der untersten Schicht angefangen), sondern nur ab dem Component, auf dem er ist. Da meint JPanel, auf dem der JButton drauf ist allerdings ebenfalls einen Background mit alpha Kanal hat, zeichnet der sich immer wieder einfach drüber, sodass nach und nach der alpha effekt vom Background an der Stelle des JPanels verschwindet (100% Alpha Wert).
    Jetzt will ich natürlich nicht jedesmal repaint aufrufen müssen, nachdem ein Button geklickt wurde und das ganze Window neu zeichnen lassen (was doch recht aufwendig wäre).
    Gibt es da ein geschicktes Vorgehen?

  • Das Problem ist ja nicht die Combo JButton plus transparentes PNG sondern JButton plus transparentes PNG plus transparentes JPanel.
    Hier mal der Code dazu:




    Ich hoffe der funktioniert auch bei euch ^^. Demonstriert denke ich ganz gut was ich meine.
    Momentan ist es so, dass ich zwar nicht das ganze Window neu zeichne, aber den gesamten bereich des Panels, auf dem der Button drauf ist, indem ich in der paintComponents methode vom JPanel, die paintComponent Methode vom JPanel aufrufe in der ich dann über getParent().paintComponent(g); (Wobei g ja noch den Clip vom JPanel hat oder?) den entscheidenden Teil des darunterliegenden Panels neu zeichne.

    Einmal editiert, zuletzt von Nicholas1991 (3. Januar 2010 um 21:50)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!