Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    8
    Per rendere cliccabile sul Circle Element quindi sempre la stessa cosa devo fare? e devo cambiare solo la condizone degli if?

    dal punto di vista del codice "controllare se la distanza del punto cliccato dal centro del circleElement è minore o meno del raggio" come sarebbe?

    cioè potresti esplicitarmi le due cose in forma codice? su questa cosa ci sto da due settimane ormai e ho provato tante di quelle soluzioni che ho la testa confusa!
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Prima di rispondere: ricordati che il tag di chiusura è: [/CODE]

    Ora leggo il resto, se puoi aggiorna il messaggio

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da spino8 Visualizza il messaggio
    Per rendere cliccabile sul Circle Element quindi sempre la stessa cosa devo fare? e devo cambiare solo la condizone degli if?


    dal punto di vista del codice "controllare se la distanza del punto cliccato dal centro del circleElement è minore o meno del raggio" come sarebbe?

    cioè potresti esplicitarmi le due cose in forma codice? su questa cosa ci sto da due settimane ormai e ho provato tante di quelle soluzioni che ho la testa confusa!
    Grazie
    Giusto per precisare: se per "rendere cliccabile" intendi l'avere un sistema che riconosca in automatico gli eventi del mouse su un componente, questo è esattamente il concetto di MouseListener...

    Cioè se tu aggiungi il MouseListener direttamente al CircleElement (che estende JComponent, quindi ha il metodo addMouseListener()), allora gli eventi che il listener "ascolta" (click del mouse, ingresso/uscita del mouse dal componente etc.) sono riferiti direttamente al singolo CircleElement.

    E' la prima strada che avevo indicato nel primo post: ogni immagine è inserita all'interno di un componente (non sapendo di CircleElement io avevo consigliato di aggiungere l'immagine ad un JButton), e gli eventi sono gestiti componente per componente.

    Avevi scelto di usare la strada 2 e aggiungere l'ascoltatore al pannello, a questo punto non sono più i singoli elementi ad essere "cliccabili" come dici tu, ma è il pannello che ricevi gli eventi e deve controllare "a mano" se il punto cliccato è all'interno di una propria figura o meno.

    Quindi potresti riconsiderare il fatto di aggiungere il mouseListener al singolo CircleElement, perché ad ora lo potresti fare.

    Quando si a che fare con le figure geometriche di solito si usano però le classi già create in java.awt e java.awt.geom (ad esempio Rectangle,Polygon,Ellipse2D).
    Queste classi hanno già definito un metodo contains a cui puoi passare un punto per controllare se è o meno all'interno della figura.

    Quindi hai diverse soluzioni: se aggiungi il mouselistener al singolo CircleElement in teoria l'evento viene attivato quando il mouse è all'interno dei bordi del JComponent, quindi nel rettangolo delimitato dai suoi estremi, se vuoi invece che sia compreso all'interno del cerchio penso che dovresti farlo tu (vedi dopo).

    Puoi anche fare in modo che CircleElement estenda una figura geometrica invece che JComponent, a quel punto hai la possibilità di usare il metodo contains della figura, ma non puoi più aggiungere un mouse listener al singolo componente, quindi devi continuare ad usare il pannello per il mouselistener, e ciclare su ogni figura utilizzando il metodo contains per verificare che il punto sia all'interno.

    Se invece vuoi controllare a mano se il punto è all'interno della figura, beh la distanza tra due punti la calcoli con il teorema di Pitagora, questo dovresti ricordartelo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.