Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Cultura Informatica
 Corso di java
 Help ProgressMonitor
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

GiganteBaba
Secchioman

apposai


Regione: Molise
Prov.: Aosta


Inserito il - 31/08/2007 : 20:59:00  Mostra Profilo  Visita l'Homepage di GiganteBaba  Invia a GiganteBaba un messaggio ICQ  Clicca per vedere l'indirizzo MSN di GiganteBaba Invia a GiganteBaba un Messaggio Privato  Rispondi Quotando
Allora cerco di spiegare il mio problema. Io sto inviando un file e
voglio che esca una barra per far capire all'utente a che stato è l'upload. Allora ho deciso di utilizzare la classe ProgressMonitor.
Il problema è che quando avvio l'upload mi esce solo il contorno della finestra del ProgressMonitor con l'interno vuoto. E rimane così fino a quando non finisce l'upload e si chiude.

L'oggetto l'ho costruito in questo modo:
ProgessMonitor progressMonitor = new ProgressMonitor( null, "Upload in corso", "", 0,(int) file.length() );

poi setto lo stato iniziale:
progressMonitor.setProgress(0);

e aggiorno lo stato nel ciclo nel quale invio il file:
...
int letti = in.read(buffer);
if( letti>0 ) {
out.write( buffer,0,letti );
totale += letti;

progressMonitor.setProgress((int)totale);
} else {
...

Sto dimenticando qualcosa??? help me pls... google nn mi dà risposte tranne il solito esempio..

Lamia
The Death of Reality is Coming

Stained_class


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 31/08/2007 : 23:25:46  Mostra Profilo  Visita l'Homepage di Lamia  Clicca per vedere l'indirizzo MSN di Lamia Invia a Lamia un Messaggio Privato  Rispondi Quotando
hai provato a sostituire null con this:

ProgessMonitor progressMonitor = new ProgressMonitor( this, "Upload in corso", "", 0,(int) file.length() );


il primo parametro indica il genitore della finestra che stai creando: se ci metti null....:p

http://www.antonioceci.com
"The further we go And older we grow The more we know The less we show" (primary)
...Politica? spero di abbandonare l'arca prima che affondi...
Torna all'inizio della Pagina

GiganteBaba
Secchioman

apposai


Regione: Molise
Prov.: Aosta


Inserito il - 01/09/2007 : 09:04:15  Mostra Profilo  Visita l'Homepage di GiganteBaba  Invia a GiganteBaba un messaggio ICQ  Clicca per vedere l'indirizzo MSN di GiganteBaba Invia a GiganteBaba un Messaggio Privato  Rispondi Quotando
Ma la classe in cui risiede il progressmonitor deve estendere JFrame? cmq proverò, non ricordo se ho già fatto questo tentativo.
Torna all'inizio della Pagina

GiganteBaba
Secchioman

apposai


Regione: Molise
Prov.: Aosta


Inserito il - 01/09/2007 : 13:12:40  Mostra Profilo  Visita l'Homepage di GiganteBaba  Invia a GiganteBaba un messaggio ICQ  Clicca per vedere l'indirizzo MSN di GiganteBaba Invia a GiganteBaba un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Lamia

hai provato a sostituire null con this:

ProgessMonitor progressMonitor = new ProgressMonitor( this, "Upload in corso", "", 0,(int) file.length() );


il primo parametro indica il genitore della finestra che stai creando: se ci metti null....:p


niente da fare, neanche con this funge bene..
Torna all'inizio della Pagina

Lamia
The Death of Reality is Coming

Stained_class


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 02/09/2007 : 12:03:10  Mostra Profilo  Visita l'Homepage di Lamia  Clicca per vedere l'indirizzo MSN di Lamia Invia a Lamia un Messaggio Privato  Rispondi Quotando
si..non ho pensato a specificarlo cmq la classe genitore dev'essere una classe che rappresenti una tua finestra...per esempio una classe che estende JFrame va bene.

cmq nei link che seguono è spiegato bene come fare:
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html
http://java.sun.com/docs/books/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java

praticamente non hai usato l'oggetto di tipo Task a cui è necessario aggiungere dei listener tipo così:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.beans.*;
import java.util.Random;

public class ProgressBarDemo extends JPanel
implements ActionListener,
PropertyChangeListener {

private JProgressBar progressBar;
private JButton startButton;
private JTextArea taskOutput;
private Task task;

class Task extends SwingWorker<Void, Void> {
/*
* Main task. Executed in background thread.
*/
@Override
public Void doInBackground() {
Random random = new Random();
int progress = 0;
//Initialize progress property.
setProgress(0);
while (progress < 100) {
//Sleep for up to one second.
try {
Thread.sleep(random.nextInt(1000));
} catch (InterruptedException ignore) {}
//Make random progress.
int letti = in.read(buffer);
if( letti>0 ) {
out.write( buffer,0,letti );
totale += letti;
}
setProgress((int)totale); //non so 'totale' dove l'hai istanziato ovviamente...cmq + o - è così

}
return null;
}

/*
* Executed in event dispatching thread
*/
@Override
public void done() {
Toolkit.getDefaultToolkit().beep();
startButton.setEnabled(true);
setCursor(null); //turn off the wait cursor
taskOutput.append("Done!\n");
}
}

public ProgressBarDemo() {
super(new BorderLayout());

//Create the demo's UI.
//questo bottone è quello che dà il via alla conta del progresso dell'esecuzione...forse tu la avvii in un altro modo cmq l'importante è che ci metti un addActionListener qualunque cosa usi, che deve avviare il tutto come fa.......
startButton = new JButton("Start");
startButton.setActionCommand("start");
startButton.addActionListener(this);

progressBar = new JProgressBar(0, 100);
progressBar.setValue(0);
progressBar.setStringPainted(true);

taskOutput = new JTextArea(5, 20);
taskOutput.setMargin(new Insets(5,5,5,5));
taskOutput.setEditable(false);

JPanel panel = new JPanel();
panel.add(startButton);
panel.add(progressBar);

add(panel, BorderLayout.PAGE_START);
add(new JScrollPane(taskOutput), BorderLayout.CENTER);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

}

/**
* Invoked when the user presses the start button.
*/
....come fa questo qui
public void actionPerformed(ActionEvent evt) {
startButton.setEnabled(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
//Instances of javax.swing.SwingWorker are not reusuable, so
//we create new instances as needed.
che istanzia l'oggetto di tipo Task e ci mette il listener
task = new Task();
task.addPropertyChangeListener(this);
task.execute();
}

/**
* Invoked when task's progress property changes.
*/
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressBar.setValue(progress);
taskOutput.append(String.format(
"Completed %d%% of task.\n", task.getProgress()));
}
}

il resto serve solo a creare l'interfaccia JFrame e renderla visibile riempiendola col JPanel ProgressBar...e il main per richiamare tutto :p
/**
* Create the GUI and show it. As with all GUI code, this must run
* on the event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("ProgressBarDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create and set up the content pane.
JComponent newContentPane = new ProgressBarDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);

//Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

http://www.antonioceci.com
"The further we go And older we grow The more we know The less we show" (primary)
...Politica? spero di abbandonare l'arca prima che affondi...
Torna all'inizio della Pagina

GiganteBaba
Secchioman

apposai


Regione: Molise
Prov.: Aosta


Inserito il - 02/09/2007 : 16:37:55  Mostra Profilo  Visita l'Homepage di GiganteBaba  Invia a GiganteBaba un messaggio ICQ  Clicca per vedere l'indirizzo MSN di GiganteBaba Invia a GiganteBaba un Messaggio Privato  Rispondi Quotando
Ti ringrazio, domani pome dopo l'esame provo.
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,57 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000