JPanel: Kollisionen feststellen



  • Hallo zusammen,
    ich habe ein Programm mit einem große JPanel (nennen wir es mal Master) auf dem sich mehrere kleine JPanels (Slaves) befinden, die sich per Drag and Drop verschieben und vergrößeren bzw. verkleinern lassen.

    Nun würde ich gerne herausfinden, wann zwei oder mehr Slaves beim modifizieren überlagern, wieviele sich in dem Moment überlagern und möglichst auch die Instanzen dieser Panels auslesen, um ihre Werte entsprechend anpassen zu können.

    Wie kann man das realisieren bzw. gibt es schon gute Lösungen für ein solches Problem?

    Vielen Danke schon einmal für eure Hilfe 🙂



  • Ich befürchte du musst jedes mit jedem auf Überschneidung überprüfen. Ist die Anzahl der Panels sehr sehr hoch ist es vielleicht günstiger für alle Pixel festzulegen welche Panels sich darauf befinden.

    Um wieviele Panels handelt es sich hier denn?

    MfG SideWinder



  • Hallo,
    die Panelanzahl an sich kann schon sehr hoch werden, aber die Panels, die wirklich kollidieren können, sollten 10 nicht überschreiten in der Praxis.

    Ich hoffe, dass das die Sache leichter macht?



  • Du weißt ja durch Drag&Drop, etc. welche Panels ihre Größe/Position verändert haben bzw. installierst jedem Panel einen dementsprechenden Listener.

    Für all diese Panels wird dir nichts anderes übrig bleiben als mit allen anderen vorhandenen Panels zu vergleichen und eine Überschneidung festzustellen.

    Welche sich tatsächlich überschneiden sammelst du dann eben in einer Liste an.

    Wenn du gleich von vornherein ein Überschneiden verhindern möchtest könntest du auch eine VetoableChangeListener in den Panels installieren.

    Aber das aktuelle Panel (in dem der Listener läuft) mit allen anderen zu vergleichen wirst du kaum umgehen können (falls es keine anderen Nebenbedingungen für die Panels gibt).

    MfG SideWinder



  • Okay, ich danke dir für deine Tipps, dann werde ich die Panels wohl alle miteinander vergleichen.


Log in to reply