Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    9

    GUI: disegnare su un JPanel a partire da un'altra classe

    Salve a tutti,
    Premetto che purtroppo ho conoscenze teoriche della programmazione in Java piuttosto lacunose, e mentre cerco di migliorare questo aspetto, procedo per tentativi nel scrivere un piccolo programma che disegna determinate forme su un JPanel.

    ho il seguente problema:
    Ho un JPanel con un MouseActionListener. Facendo click su un punto del Panel appare (secondo quanto descritto nella Classe che implementa MouseListener) un rettangolo nel punto in cui si clicca.
    Ora vorrei che facendo click un'altra volta su questo rettangolo o su un altro, questo sparisse.

    La funzione ClearRec() non la posso usare credo perchè il mio sfondo non è omogeneo bensì contiene una griglia, e si cancellerebbe anch'essa quando vado a cancellare il rettangolo. Allora ho usato il metodo ClearAll riferito al Panel che però naturalmente cancella tutti i rettangoli e non solo quello su cui ho cliccato.
    Siccome però le coordinate dei rettangoli vengono memorizzate come Lista in un altra classe, pensavo di poter scrivere una porzione di testo in questa classe che conosce le coordinate dei rettangoli rimanenti, per "rigenerarli" al loro vecchio posto. Cioè vorrei scrivere un metodo in una Classe che dica alla Classe con il JPanel di disegnarci qualcosa sopra.

    E ho fatto così:

    CLASSE LISTA

    codice:
    public class Lista{
    
    
        public static void Redraw(Graphics g){
                
                g = Panel.p1.getGraphics();
                g.setColor(Color.black);
                g.drawRect(10,10,10,10);
                
            }

    CLASSE MOUSELISTENER

    codice:
            public class ClickToSet implements MouseListener{
    
                   Lista l1 = new Lista();
    
                   public void mouseClicked(MouseEvent m) {
                      Graphics g = Panel.p1.getGraphics();          Panel.p1.removeAll();
              l1.Redraw(g);
                  Panel.p1.update(g);
    
    
            }

    Ma i rettangoli non vengono ridisegnati una volta cancellati.
    Insomma spero di essermi spiegato piú o meno.. se qualcuno ha qualche idea su come fare sarebbe stupendo.
    Grazie in anticipo.
    franz
    Ultima modifica di LeleFT; 27-02-2015 a 12:13 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    9
    Tutto a posto, sono riuscito a sistemarlo

Tag per questa discussione

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.