Wie können Sie ein Mausklick-Ereignis für ein Bildobjekt in Java erkennen?

8

Implementieren von " Kings 'Corners " (verherrlichter Multiplayer-Solitaire) in Java.

Ich versuche, einem Spieler zu erlauben, eine Karte (ein Bild) von seiner Hand zu einer anderen Stelle auf dem Tisch zu ziehen. Das Problem ist, dass die Hand des Spielers "gefächert" ist, so dass die Bilder der Karten gedreht werden und sich überlappen.

Hier ist ein Beispiel für eine Hand:

Ich habe darüber nachgedacht, jede Karte zu einem JPanel zu machen, aber das Problem ist dann, dass ich die Karte innerhalb ihrer rechteckigen JPanel rotieren muss, wie sie selbst nicht können gedreht werden. Im Idealfall möchte ich vermeiden, dass Maus-x, y-Formeln bestimmen, welche Karte ausgewählt wird.

Wie kann ich mithilfe eines ereignisgesteuerten Ansatzes bestimmen, welche Karte aus der Hand ausgewählt wurde?

    
rtheunissen 05.07.2011, 01:16
quelle

1 Antwort

5
___ tag123events ___ Ein Ereignis ist eine Möglichkeit für eine Klasse, Benachrichtigungen an Listener zu senden, wenn eine bestimmte Sache passiert. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123draganddrop ___ Drag-and-drop ist in Computer-Benutzeroberflächen die Aktion (oder Unterstützung für die Aktion), ein virtuelles Objekt durch "Greifen" und Ziehen an einen anderen Ort oder auf ein anderes virtuelles Objekt auszuwählen. ___ qstnhdr ___ Wie können Sie ein Mausklick-Ereignis für ein Bildobjekt in Java erkennen? ___ qstntxt ___

Implementieren von " Kings 'Corners " (verherrlichter Multiplayer-Solitaire) in Java.

Ich versuche, einem Spieler zu erlauben, eine Karte (ein Bild) von seiner Hand zu einer anderen Stelle auf dem Tisch zu ziehen. Das Problem ist, dass die Hand des Spielers "gefächert" ist, so dass die Bilder der Karten gedreht werden und sich überlappen.

Hier ist ein Beispiel für eine Hand:

Ich habe darüber nachgedacht, jede Karte zu einem contains(Point) zu machen, aber das Problem ist dann, dass ich die Karte innerhalb ihrer rechteckigen Shape.contains() rotieren muss, wie sie selbst nicht können gedreht werden. Im Idealfall möchte ich vermeiden, dass Maus-x, y-Formeln bestimmen, welche Karte ausgewählt wird.

Wie kann ich mithilfe eines ereignisgesteuerten Ansatzes bestimmen, welche Karte aus der Hand ausgewählt wurde?

    
___ tag123mouse ___ Eine Maus ist ein Zeigegerät, das funktioniert, indem es eine zweidimensionale Bewegung relativ zu seiner tragenden Oberfläche erkennt. ___ answer6577449 ​​___

AWT (und Swing) -Komponenten sind normalerweise rechteckig (an den Achsen ausgerichtet).

Aber das muss nicht der Fall sein - während die tatsächlichen Grenzen rechteckig sein müssen, kann die tatsächliche Fläche, die eine Komponente verwendet, kleiner sein. Die Komponente unterstützt eine %code% -Methode, die vom Ereignisverteilungsmechanismus aufgerufen wird, wenn die Frage auftaucht, zu welcher Komponente ein Punkt gehört - zum Beispiel für Mausklicks. (Das Überlappen verschiedener Komponenten wird von der Z-Reihenfolge im übergeordneten Container behandelt.)

Sie können diese Methode basierend auf der Methode %code% implementieren, indem Sie ein affines transformiertes Rechteck als Ihre Form verwenden. Jede Ihrer gedrehten Komponenten würde ihre eigene Form kennen (oder sie aus ihrer AffineTransform erzeugen, die gleiche, die auch für das Bemalen verwendet wird).

Haben Sie einen benutzerdefinierten LayoutManager, der auch Ihre Karten anordnet. (Verwenden Sie CardLayout trotz des Namens nicht.)

Ich bin mir nicht sicher, ob ich für jede Karte separate Komponenten verwenden würde, aber Sie benötigen sicherlich einige Objekte, die die gedrehten Rechtecke darstellen.

    
___
Paŭlo Ebermann 05.07.2011, 02:11
quelle

Tags und Links