PDA

View Full Version : [JAVA] Swing, problema creazione frame


tonio123
12-11-2011, 17:09
Salve a tutti vi chiedo aiuto con questo problema perchè non riesco proprio a venirne a capo:

Allora io ho una finestra ProgressFrame composta semplicemente da una JLabel e da una JProgressBar con il seguente codice:
public ProgressFrame(int a){
super("Inserimento in corso: ");
initGUI(a);
}

public void setBarra(int val){
barra.setValue(val);
this.repaint();
}

private void initGUI(int a) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException
| UnsupportedLookAndFeelException e) {
System.out.println("bo");
}
this.setSize(400,100);

JPanel pannello=new JPanel();
pannello.add(new JLabel("Film trovati: "+a+" -->"));
barra=new JProgressBar();
pannello.add(barra);
this.getContentPane().add(pannello);

this.setLocationRelativeTo(null);
this.setVisible(true);
}

Se creo questo frame dal main non ho alcun problema, si vede tutto quanto e la barra si aggiorna perfettamente con setBarra.

Il problema è che io voglio istanziare questa classe da un metodo di un altro oggetto con il seguente codice:
public void addMovie(File dir) throws IOException, MovieNotFound {
int i=1;
if(dir.isDirectory()){
File[] elenco=dir.listFiles(new FileFilter());
ProgressFrame progress=new ProgressFrame(elenco.length);
for(File x: elenco){
.... //faccio varie azioni
progress.setBarra(i);
i++; }
progress.dispose()

e in teoria dovrebbe andare, ma il risultato è che si apre il frame, ma senza contenuto, nel senso che si vede solo un pannello bianco...
Io non so proprio dove sbattere la testa, anche perché come già detto dal main funziona perfettamente.
C'è qualcuno che mi sa dire dove sta il problema??

tonio123
13-11-2011, 14:37
Up,
per capirsi questo è quello che si dovrebbe vedere e che si vede se lo creo dal main:
http://img94.imageshack.us/img94/2226/funziona.png

questo invece se lo creo dal metodo scritto sopra:
http://img542.imageshack.us/img542/4783/pippo.png

andreagira
16-11-2011, 14:44
cosi a prima vista sembrerebbe che non esegua initGui() dentro il costruttore, hai provato a spostare il codice dentro il costruttore?
hai dato un occhiata all'output , magari c'e un eccezione...