Pagina 5 di 7 primaprima ... 3 4 5 6 7 ultimoultimo
Visualizzazione dei risultati da 41 a 50 su 69
  1. #41
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ti posto un'esempio simile a quello online. In grassetto le parti significative. Chiedi pure cosa non ti e' chiaro.
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class ProgressBar extends JFrame implements ActionListener {
        private JButton startButton;
        private JPanel panel;
        private JProgressBar progressBar;
        private Task task;
        
        //Classe thread apposita per swingSwing
        class Task extends SwingWorker<Void, Void> {
            //Questo e' il metodo che aggiorna la barra viene eseguito(una sola volta) 
            //in background e non blocca l'applicazione
            public Void doInBackground() {
                int progress = 0;
                while (progress < 100) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException ignore) {}
                    //Uso un random, nel tuo caso aggiorni il valore come preferisci
                    progress += (int)(Math.random()*10);
                    progressBar.setValue(progress);
                }
                startButton.setEnabled(true);
                return nul;
            }
        }
        
        public ProgressBar() {
            super("Test");
            startButton = new JButton("Start");
            startButton.addActionListener(this);
            progressBar = new JProgressBar(0, 100);
            progressBar.setValue(0);
            progressBar.setStringPainted(true);
            panel = new JPanel();
            panel.add(startButton);
            panel.add(progressBar);
            this.setContentPane(panel);
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.pack();
            this.setVisible(true);
        }
        
        public void actionPerformed(ActionEvent evt) {
            startButton.setEnabled(false);
            //Alla pressione del bottone faccio partire il thread
            progressBar.setValue(0);
            task = new Task();
            task.execute();
        }
        
        public static void main(String[] args) {
            new ProgressBar();
        }
    }

  2. #42
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    370
    la mia estensione è cosi

    public class muovifoto extends javax.swing.JFrame implements ActionListener

    ho visto che la tua infece è

    public class ProgressBar extends JFrame implements ActionListener

    è uguale o quel javax.swing gli vincola qualcosa?

  3. #43
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    370
    mi da errore a questa riga


    class Task extends SwingWorker<Void, Void> {

    cannot find symbol

    e anche qua

    task.execute();

    dice che non esiste nessun metodo execute

  4. #44
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Allora, per il primo post, e' la stessa cosa.
    Per il secondo, la classe SwingWorker e' disponibile solo dalla versione 1.6 se usi una versione precedente si deve procedere in altro modo.

  5. #45
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    370
    1.6 di cosa?

  6. #46
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Di java.

  7. #47
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    370
    delle jdk ho la 1.5.0

  8. #48
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ok, allora niente Swingworker. Torniamo ai Timer. Stesso esempio con uso di Timer.
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class ProgressBar extends JFrame implements ActionListener {
        private JButton startButton;
        private JPanel panel;
        private JProgressBar progressBar;
        private Task task;
        private Timer timer;
        private int progress = 0;
        
        class Task implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                //Uso un random, nel tuo caso aggiorni il valore come preferisci
                progress += (int)(Math.random()*10);
                progressBar.setValue(progress);
                if(progress>100) {
                    timer.stop();
                    startButton.setEnabled(true);
                }
            }
        }
        
        public ProgressBar() {
            super("Test");
            timer = new Timer(100, new Task());
            startButton = new JButton("Start");
            startButton.addActionListener(this);
            progressBar = new JProgressBar(0, 100);
            progressBar.setValue(0);
            progressBar.setStringPainted(true);
            panel = new JPanel();
            panel.add(startButton);
            panel.add(progressBar);
            this.setContentPane(panel);
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.pack();
            this.setVisible(true);
        }
        
        public void actionPerformed(ActionEvent evt) {
            startButton.setEnabled(false);
            //Alla pressione del bottone faccio partire il thread
            progress = 0;
            progressBar.setValue(0);
            timer.start();
        }
        
        public static void main(String[] args) {
            new ProgressBar();
        }
    }

  9. #49
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    370
    ok ma lo visualizzo solo alla fine
    se metto start nella funzione che richiamo non mi si aggiorna lo stesso se non alla fine

    devo mettere qualcosa nel punto del programma dove voglio che si aggiorni?

    grazie sei gentilissimo ma siamo sulla strada giusta

  10. #50
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    A me il codice sopra funziona correttamente. Start mettilo nell'actionPerformed.

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