Hallo zusammen,
ich hab hier ein kleines Problem. Ich habe in meinem Programm einen Button der bei Knopfdruck Daten aus dem Internet lädt, was eine Weile dauert.
Während dieser Zeit war das Program nicht erreichbar. Erst wenn das Daten holen abgeschlossen war konnt ich wieder mit arbeiten.
Also dachte ich mir ich pack das ganze in einen Thread welcher das ganze dann nebenbei erledigt und das Programm
dadurch weiterhin bedienbar ist. Aber leider funktioniert das überhaupt nicht d.h. es ist genau so wie vorher.
Habe ich einen (Denk-) Fehler gemacht?
Gruß Alex
ich hab hier ein kleines Problem. Ich habe in meinem Programm einen Button der bei Knopfdruck Daten aus dem Internet lädt, was eine Weile dauert.
Während dieser Zeit war das Program nicht erreichbar. Erst wenn das Daten holen abgeschlossen war konnt ich wieder mit arbeiten.
Also dachte ich mir ich pack das ganze in einen Thread welcher das ganze dann nebenbei erledigt und das Programm
dadurch weiterhin bedienbar ist. Aber leider funktioniert das überhaupt nicht d.h. es ist genau so wie vorher.
Code:
public class CRefreshGenre extends JButton implements ActionListener, Runnable
{
Thread thread;
CRefreshGenre(String titel)
{
super(titel);
addActionListener(this);
thread = new Thread(this);
}
public void actionPerformed(ActionEvent e)
{
thread.run();
}
public void run()
{
//System.out.println("Action läuft");
LinkedList <CStation> stations = new LinkedList<CStation>();
//Prüfe ob selection ein Subgenre ist
if (CDatabase.checkIfSubgenre(CTreeShoutcast.tr_shoutcast_ref.getSelectionPath().getLastPathComponent().toString()))
{
//Lade Subgenre neu
try
{
//Hole aktuelle Stationen des Subgenres
stations = CGetData.getSubGenreStation(CTreeShoutcast.tr_shoutcast_ref.getSelectionPath().getLastPathComponent().toString());
//Lösche die Tabelle für die neuen aktuellen Stationen
CDatabase.clearStationTable(CTreeShoutcast.tr_shoutcast_ref.getSelectionPath().getLastPathComponent().toString());
//Lade die neuen Stationen in die Datenbank
for (CStation a : stations)
{
CDatabase.entryStationTable(CTreeShoutcast.tr_shoutcast_ref.getSelectionPath().getLastPathComponent().toString(), a.getName(), a.getPlayref(), a.getPlaying(), a.getWeblink(), a.getBitrate(), a.getType(),a.getListener());
}
//Lade die neuen Daten ins TableModel und zeichne Tabelle neu
CTableModelShoutcast.tb_shoutcast_ref.loadNewGenre(CTreeShoutcast.tr_shoutcast_ref.getSelectionPath().getLastPathComponent().toString(), true);
CTableModelShoutcast.tb_shoutcast_ref.fireTableDataChanged();
}
catch (Exception f)
{
System.out.println("Fehler beim neuladen des Subgenres");
}
}
}
}
Habe ich einen (Denk-) Fehler gemacht?
Gruß Alex