Frage zu Canvas und Mausereignissen!

dapor

Mitglied
Hi,

ich mache grad eine Anwendung, bei welcher ich mir eigene Buttons erstelle!
Man soll sehen können, wenn man mit der Maus über einem Objekt ist und wieder ein anderes Bild, wenn man das Objekt drückt!
ich habe mein JFrame einfach unterteilt in mehrere JPanels und habe dann mit eigenen Klassen, die von Canvas erben, es geschafft, dass ich einen Mauslistener einfügen kann, der rausbekommt, ob ich über einem Objekt bin oder nicht, oder halt, ob ich es drücke oder nicht!
Jetzt meine Frage:
Ich möchte aber folgendes noch schaffen: Ich übergebe den Klassen kein Bild, sondern nur ein leeres nicht sichtbares Objekt von unterschiedlicher Größe und an bestimmten Stellen, damit ich mit einem MausListener herausfinden kann, ob ich über dem Objekt bin oder nicht.
Wenn ich dass aber mit eigenen Klassen mache, die von Canvas erben, habe ich das Problem, dass dort, wo das Objekt ist, ein graues rechteck ist und somit nicht unsichtbar wie ich es eigentlich wollte!
Also Java soll sich nur vorstellen, da ist ein Objekt, damit ich die Maussachen benutzen kann!
habe auch schon probiert ein leeres Bild mitzuübergeben (also ein komplett durchsichtiges Bild) aber das Fkt genausowenig leider :(

Kann mir einer helfen oder muss ich den Umweg gehen und den MausMove selber auswerten, ob ich über einem Objekt bin?

Ich hoffe auf eine bessere Loesung und hoffe außerdem ihr habt mein Problem verstanden.
 
Moin,
so ganz verstanden habe ich das nicht. Dennoch zwei Ideen:
- Mittels setOpaque() wird die Transparenz ein-/ausgeschaltet - kann sein, dass Du das schon verwendest, wenn nicht, ist es einen Versuch wert.
- Beim MouseEvent kann man mit getComponentAt(...) herausfinden, welche Komponente sich an der Stelle befindet, an der sich der Mauszeiger befindet.
 
ok sorry war vielleicht etwas verwirrt aufgeschrieben.

kurz und knapp möchte ich es "nur" schaffen, Bereiche in meinem JFrame festzulegen, welche nicht sichtbar sind, damit ich diesen Bereichen einen MouseListener zufügen kann, und somit halt verschiedene Methoden damit aufrufen kann.

Ich möchte die Größe und die Location bestimmen können, deshalb hab ich bis jetzt für die Bereiche halt eigene Klassen mit extends Canvas definiert!

Zur besseren Veranschaulichung habe ich 2 bilder reingestellt
Dieses hier ist so wie es aussehen soll!
So sieht es aber leider aus, wenn ich die leeren Canvas Klassen einbaue!
 
danke, ich schaue gleich nach!
Und nochmal danke, dass du dir die Zeit nimmst für dieses "kleine" Problem!

EDIT: OMG, das wird glaube ich etwas länger bis ich dahinter gestiegen bin wie das gemacht ist. Falls also jemand eine schnelle Idee hat wie man das Problem lösen kann, immer her damit ;)
Aber super Schachspiel! Gefällt mir :)
 
Zuletzt bearbeitet:
Zurück