GUI Problem

nautiLus`

Erfahrenes Mitglied
Hallo, ich setze mir ein komplettes GUI zusammen

Code:
private void initGui()
	{
		myFrame = new JFrame();
		panel = new JPanel();
		myFrame.setResizable(false);
		
		myProgress = new javax.swing.JProgressBar();
      	                myProgress.setBackground (java.awt.Color.black);
		myProgress.setForeground (java.awt.Color.red);
		
		label = new JLabel("");
		label_1 = new JLabel("");
			
		panel.add (label);
		panel.add (myProgress);
		panel.add (label_1);
		
      	myFrame.setContentPane(panel);
      	myFrame.setTitle("MP3 Downloader");
      	myFrame.setBounds(100,100,256,50);
      	myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      	myFrame.setVisible(true); 
      		
      	download();
      	
	}

Die letzte Methode download() durchläuft eine HashMap

Code:
	private void download()
	{
		int i = 1;
		Set HostKeys = hashmap.keySet();	
		Iterator It = HostKeys.iterator();
		
		
		while (It.hasNext()) 
		{	
			String HostNow = (String)(It.next());
			
			System.out.println(hashmap.get(HostNow));
			
			label.setText(hashmap.get(HostNow)+".zip ");
			label_1.setText(i+".");
					
			try {		
				downloadItem(HostNow, (String)this.album+"\\"+hashmap.get(HostNow));
					
			} catch(Exception e) {
				JOptionPane.showMessageDialog(null,"Download Error!", "Error",JOptionPane.ERROR_MESSAGE);
			}
			i++;		
		}
	}

Die einzelnen "Items" in der HashMap sind Zip Dateien welche ich mittels downloadItem() herunterladen will.

Code:
    private void downloadItem(String addr, String filename) throws IOException
    {
		URL url = new URL(addr);
		BufferedInputStream bis = new BufferedInputStream(url.openStream());
		
		File file = new File(filename+".zip");
		BufferedOutputStream bos = new BufferedOutputStream(
			new FileOutputStream(file));
	
		byte[] buffer = new byte[8192];
		int len;
	
		System.out.println("New download in progress...");
		System.out.println("Downloading "+filename+".zip");
		
		while ((len = bis.read(buffer)) > 0) 
		{
			bos.write(buffer, 0, len);
		}
	
		bos.flush();
		bos.close();
	
		bis.close();    		
    }

Alles funktioniert prächtig mit dem Herunterladen, aber sobald ich mittels einem anderen GUI (durch Klicken auf einen Button) oben gepostetes GUI aufrufe wird es auch angezeigt aber nicht korrekt. Es sind keine Elemente zu sehen, nur der Frame ist da. und im Hintergrund wird brav heruntergeladen. Sobald der letzte Download abgeschlossen ist, der in der Hashmap stand, erscheint das komplette GUI wieder.

Was hats da für Probleme?
Danke, Nauti
 
Ich denke es ist folgendes:
Die Gui wird nur von diesem AWT-Thread aktualisiert, aber erst, wenn nichts ausgeführt wird (So wars bei mir immer...)
Probier mal vor dem Aufruf download(); in initGui() noch myFrame.updateUI(); oder myFrame.updateUI(myFrame.getGraphics());
Wenn das nícht hilft mach das gleiche noch mal mit dem Panel, dann mit den einzelnen Komponenten...
 
Hi,

irgendwie hilft das doch nichts hab jetzt fast überall schon

myFrame.update(myFrame.getGraphics());
panel.updateUI();

stehen aber anscheinend hats da was. Wenn ich dann mit einem anderen Fenster über das GUI drüberfahre wird es zu einem leeren Fenster und wieder ist nur der Frame da.

Seltsames Problem. An was kanns noch liegen?
 
Zurück