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

    [JAVA] Pannello Visualizzazione Orario, utilizzo repaint()

    Sto cercando di realizzare un pannello per la visualizzazione dell'ora gestendo dei thread. Lo scorrimento dell'ora funziona bene però ho dei problemi con la pulizia dello schermo.
    I secondi che scorrono si sovrappongono, evidentemente il metodo
    repaint() non pulisce il pannello.
    Sapete dirmi come devo fare per far pulire il pannello ogni volta?
    Perchè repaint non funziona?

    Ecco il codice del JPanel:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import java.util.*;
    import java.io.*;

    public class orologio extends JPanel implements Runnable {

    private Thread avanza = null; /* Il thread dell'orologio !!! */

    public orologio(){
    start();
    }

    public void start() {
    if (avanza == null) {
    avanza = new Thread(this, "orologio");
    avanza.start();
    }
    }

    public void run() {
    while (Thread.currentThread() == avanza) {
    repaint();
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e){ }
    }
    }

    /* Funzione di disegno che semplicemente scrive data ed ora */
    public void paint(Graphics g){
    String tt="",ora="",min="",sec="";
    Date now = new Date();

    ora+=now.getHours();
    min+=now.getMinutes();
    sec+=now.getSeconds();
    if(now.getHours()<10)ora="0"+ora;
    if(now.getMinutes()<10)min="0"+min;
    if(now.getSeconds()<10)sec="0"+sec;
    tt=ora+" : "+min+" : "+sec;
    g.setFont(new Font("Roman",1,16));
    g.drawString(tt, 20, 20);
    }


    public void stop() {
    avanza = null;
    }
    }

    Il codice che richiama il pannello è il seguente:

    public class orologioframe extends JFrame{

    private orologio o;

    public orologioframe(){
    Container c=getContentPane();
    o=new orologio();
    c.add(o);
    setSize(200,100);
    show();
    }

    public static void main(String args[]){
    new orologioframe();

    }

    }

    Dove è che sbaglio? perchè il repaint non funziona bene?
    Luca >> http://www.pollosky.it

  2. #2

    ok

    Non sono sicuro ma tu provaci

    allora nel metodo- public void paint(Graphics g){
    qui metti: super.paint(g); o altrimenti metti super.paintComponent(g);
    }
    dico altrimenti perche io ridefinisco sempre il metodo paintComponent per disegnare, e non faccio mai paint(Graphics g)...
    comunque dovrebbe funzionare lo stesso.
    fammi sapere se funziona il tutto ciao.
    HARDCORE WILL NEVER DIE!!!http://www.musicahardcore.it
    http://www.bedandgo.it

  3. #3
    devi inserire paintComponent(g); subito dopo l'intestazione di paint, paintComponent(Graphics g); e' ereditato da ogni JComponent;
    Nulla, ma e' sempre qualcosa.

  4. #4
    Cerca di inserire il codice nei tag di formattazione,
    se vedi sopra dove scrivi i messaggi trovi i pulsanti con scritto CODE.
    Nulla, ma e' sempre qualcosa.

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