Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56

    Assegnare ActionListener a dei rectangle

    Salve a tutti ragazzi è la prima volta che vi scrivo
    dato che ogni volta che avevo un problema cercando in giro sul forum trovavo sempre una soluzione

    in questo caso non sono riuscito a trovare soluzione
    vi spiego cosa devo fare

    codice:
    public class ClasseEconomy extends JComponent{
    	
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    
    
    	public void paintComponent(Graphics g)
    	{
    		Graphics2D g2=(Graphics2D) g;
    		
    		Rectangle box=new Rectangle(0, 0,50, 50);
    		g2.setColor(Color.GREEN);
    		
    		
    		int X=55;
    		int Y=0;
    		
    		for (int k = 0; k < 3; k++) 
    		{
    			for (int i = 0; i < 4 ; i++) 
    			{
    				g2.draw(box);
    				g2.fill(box);
    				
    				box.translate(X,Y);
    			}
    			int x=X-55*5;
    			int y=Y+55;
    			box.translate(x, y);
    		}
    	}
    	
    }
    praticamente in questo modo ho disegnato tanti rectangle in 3 file da 4 posti
    tutti verdi
    adesso devo poter cliccare su uno di questi rectangle aprire un popup che mi faccia settare alcuni paramentri
    e dopo devo colorare il rectangle che ho cliccato di rosso

    ma non riesco ad assegnare ai rectangle un actionlistener

    come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    nessuno sa aiutarmi?
    magari ho sbagliato io qualcosa nel programma?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ok, allora un ActionListener può essere appiccicato ad un sacco di cose, ma credo che così come vorresti applicarlo tu, ad un "disegno" non possa andare bene.
    Però, utilizzando un Listener diverso (MouseListener), sul contenitore dei tuoi Rectangle e determinando il punto in cui avviene il click, e quindi a quale Rectangle sia interno, allora la cosa si può fare abbastanza agilmente.

    In altre parole, definisci un tuo MouseAdapter (soprattutto se l'unico evento che ti interessa è il mouseClicked: in questo peschi le coordinate del click (MouseEvent definisce sia getX e getY che direttamente un getPoint), quindi sfrutti contains (int x, int y) o contains(Point p) di Rectangle per determinare quale rettangolo sia stato clickato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    grazie per la tua risposta
    ho capito come intendi però
    adesso mi è venuta in mente un altra cosa

    la prima è che essendo disegni è possibile richiamare su questi la funzione contains di rectangle?
    e poi altra cosa un pò più importante che adesso ho riflettuto

    ad ognuno di questi rectangle dovrei assegnare un codice o indice comunque che mi identifichi univocamente un posto

    come potrei implementare questa cosa?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    up
    nessuno sà come posso risolvere?

    devo solo disegnarli i rettangoli o devo crearne uno per ogni casella da disengare?
    e poi come indicizzo i rectangle in modo che mi fornincano un codice o un numero per indentificarli?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.