Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    JAVA progress bar-TaskMonitor

    Salve a tutti,

    sto creando un Desktop application con Netbeans 6.0 nel codice generato automaticamente da Nb ci sarebbe la possibilità di utilizzare anche una progress bar che (mi pare di aver capito..) è collegata a delle icone, ma ho trovato pochi esempi che mi fanno capire come si usa nello specifico questo codice generato automaticamente.

    Mi piacerebbe realizzare un thraed che avviato alla pressione di un pulsante facesse determinate operazioni e che, durante queste, le icone-progressbar della finestra principale simulassero l'esecuzione dell operazione in corso...posto il codice

    codice:
    public class PView extends FrameView {
    
        public PView(SingleFrameApplication app) {
            super(app);
    
            initComponents();
    
            // status bar initialization - message timeout, idle icon and busy animation, etc
            ResourceMap resourceMap = getResourceMap();
            int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
            messageTimer = new Timer(messageTimeout, new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    statusMessageLabel.setText("");
                }
            });
            messageTimer.setRepeats(false);
            int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
            for (int i = 0; i < busyIcons.length; i++) {
                busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
            }
            busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                    statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
                }
            });
            idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
            statusAnimationLabel.setIcon(idleIcon);
            progressBar.setVisible(false);
    
            // connecting action tasks to status bar via TaskMonitor
                              TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
            taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
                public void propertyChange(java.beans.PropertyChangeEvent evt) {
                    String propertyName = evt.getPropertyName();
                    if ("started".equals(propertyName)) {
                        if (!busyIconTimer.isRunning()) {
                            statusAnimationLabel.setIcon(busyIcons[0]);
                            busyIconIndex = 0;
                            busyIconTimer.start();
                        }
                        progressBar.setVisible(true);
                        progressBar.setIndeterminate(true);
                    } else if ("done".equals(propertyName)) {
                        busyIconTimer.stop();
                        statusAnimationLabel.setIcon(idleIcon);
                        progressBar.setVisible(false);
                        progressBar.setValue(0);
                    } else if ("message".equals(propertyName)) {
                        String text = (String)(evt.getNewValue());
                        statusMessageLabel.setText((text == null) ? "" : text);
                        messageTimer.restart();
                    } else if ("progress".equals(propertyName)) {
                        int value = (Integer)(evt.getNewValue());
                        progressBar.setVisible(true);
                        progressBar.setIndeterminate(false);
                        progressBar.setValue(value);
                    }
                }
            });
        }
    qualcuno è in grado di illuminarmi...??

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64
    ho trovato questo che sembra essere interessante

    http://article.gmane.org/gmane.comp....ns.user/125448

    ...il fatto è che per come devo utilizzare io la progress bar-e la relativa animazione...cioè che sottolinei l'esecuzione di un thread mentre questo è in esecuzione...questa soluzione, che ho adattato vagamente al mio problema, "intasa" la cpu che solo per eseguire l'animazione e la progress bar schizza al 100%...

    posto di seguito il codice che ho poi adattato a quello che stavo facendo...
    codice:
        @Override
        protected Object doInBackground() throws Exception {
                
    
           
           int i = 0;
           
            while (PView.k==0){
              
                    i++;
                    
                    PView.progressBar.setValue(i);
                
            
            
            }
                 return null;
            
        }
    per adesso mi è venuto in mente questo metodo per eseguire la barra...cioè del cambiamento di stato di una variabile che segnale la fine dell'esecuzione del processo relativo al thread, ma sicuramente c'è un sistema più effeciente e meno dispendioso per la cpu...se qualcuna ha qualche esperienza o consiglio in proposito.

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.