Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA]Problema con il metodo repaint()

    Salve a tutti,
    avrei bisogno del vostro aiuto per quanto riguarda questo problema: ho bisogno di poter utilizzare il metodo repaint() in una classe che estende JPanel per potervi disegnare degli elementi (ho ridefinito il metodo paintComponent(Graphics g)). Il problema è che, pur chiamando il metodo all'interno del ciclo, non me lo esegue non disegnando quindi quello che mi serve...
    Allego il codice per una maggiore chiarezza.
    Questa è la parte dove si trova il ciclo:
    codice:
    try{            while(flag){
                    testoSelezionato = testoFile.substring(contatore, contatore + 4);
                    repaint();
                    contatore = contatore + 5;
                }
            }catch(StringIndexOutOfBoundsException e){
                flag = false;
            }
    E questa è quella dove ridefinisco il paintComponent:
    codice:
    public void paintComponent(Graphics g){        super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g;
            
            g2.setFont(carattere);
            g2.setColor(Color.BLACK);
            g2.drawString("Andamento pressione: ", 20, 20);
            g2.drawString("1013 hpa --------------------------------------------------------------------------------------", 0, 100-(int)10.13);
            g2.fillOval((contatore + 10) * 2, 100 - Integer.parseInt(testoSelezionato)/100, 10, 10);
            g2.drawString(testoSelezionato, (contatore) * 2, 120);
        }
    Grazie in anticipo per l'aiuto!!

    Andrea

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Andrea95 Visualizza il messaggio
    Questa è la parte dove si trova il ciclo:
    codice:
    try{            while(flag){
                    testoSelezionato = testoFile.substring(contatore, contatore + 4);
                    repaint();
                    contatore = contatore + 5;
                }
            }catch(StringIndexOutOfBoundsException e){
                flag = false;
            }
    Questo pezzo di codice dove lo fai? O per meglio dire: in che contesto lo esegui?
    Tieni presente il concetto fondamentale: repaint() di per sé non ridisegna un bel niente, è una richiesta di ridisegno "asincrona". Si limita solo a depositare nella coda degli eventi una richiesta di ridisegno e basta. Affinché poi avvenga davvero il repaint, il controllo deve tornare al framework.

    Se hai eseguito ad esempio questo codice in risposta ad un evento es. click su pulsante, quindi tipicamente nel contesto di un actionPerformed di un ActionListener, la gestione dell'evento deve finire, quindi actionPerformed deve terminare e il controllo tornerà al framework. Solo allora scoprirà "ah, c'è una richiesta di repaint" e scatenerà tutta la fase di paint del componente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.