Paint dinamico su JPanel

di il
9 risposte

Paint dinamico su JPanel

Salve a tutti, ho fatto un'applicazione dove vado a creare un JPanel e, facendo un'override sul metodo paintComponent disegno alcuni quadrati bianchi con bordo nero sparsi per il pannello.
Ora, in base ad alcuni eventi dovrei colorare diversamente uno dei tanti quadrati, quindi ridisegnarlo cambiando sfondo, sapendo ovviamente di quale quadrato si tratta.
Il problema è che non ho idea di come fare a ridisegnare, sapete aiutarmi?

Grazie in anticipo, ciao!

9 Risposte

  • Re: Paint dinamico su JPanel

    Non ho capito il tuo problema. non sai come farlo o non lo fà?

    se non lo fà, prova a chiamare un revalidate dopo aver fatto gli aggiornamenti
  • Re: Paint dinamico su JPanel

    No, quello che dico è che non ho idea di come farlo! Son 5 anni che faccio java ma onestamente non ho mai lavorato molto con la Graphics quindi non ho idea di come si possa fare... Sai aiutarmi? D:
  • Re: Paint dinamico su JPanel

    Allora, innanzitutto spiega come si devono spostare i quadrati e come invii i dati per lo spostamento
  • Re: Paint dinamico su JPanel

    Allora io ho un JPanel sul quale, tramite il paintComponent, vengono disegnati dei quadrati 30x30 a delle x e y prestabilite, e ho bisogno che tramite un metodo
    
    paintRectangles(int[]x,int[]y,Color[]colors)
    
    lui colori il rettangolo {x,y,30,30} del colore colors

    Ho provato a fare così:

    
    public void paintRectangles(int[]x,int[]y,Color[]colors){
          Graphics g = getGraphics();
          for(int i=0;i<x.length;i++){
                g.setColor(colors[i]);
                g.fillRect(x[i], y[i], 30, 30);
                g.setColor(Color.black); //bordo nero
                g.drawRect(x, y, 30, 30);
          }
          paint(g);
    }
    
    Però:
    1. se faccio l'override del paintComponent sul JPanel e inizializzo i rettangoli direttamente dal paintComponent, quelli che disegno col paintRectangles vengono sempre portati in secondo piano, li vedo per un decimo di secondo e poi spariscono sotto quelli vecchi
    2. se invece elimino l'override del paintComponent e inizializzo tutti i rettangoli con il metodo paintRectangles e poi li aggiorno sempre con lo stesso metodo viene disegnato tutto correttamente, ma appena faccio un repaint() o semplicemente ridimensiono la mia finestra, sparisce tutto e sono daccapo.

    Non so se mi sono spiegato, ovviamente se così non fosse chiedimi pure
  • Re: Paint dinamico su JPanel

    Come richiedi l'aggiornamento dei quadrati?
  • Re: Paint dinamico su JPanel

    In che senso? non ho capito...

    ps. perchè non mi arrivano le notifiche via mail quando qualcuno risponde?
  • Re: Paint dinamico su JPanel

    Per le notifiche sarà qualche iumpostazione del forum...per quello che intendo io: i nuovi triangoli li disegni in posizioni specifiche oppure le "selezioni" a runtime?
  • Re: Paint dinamico su JPanel

    I rettangoli vengono disegnati in posizioni predefinite, quello che devono fare è solo cambiare colore, la posizione di ogni rettangolo è scritta nel programma.
  • Re: Paint dinamico su JPanel

    Chiama un revalidate() ad ogni aggiornamento
Devi accedere o registrarti per scrivere nel forum
9 risposte