WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 21.07.2008, 07:52   #7
athropos
Hero
 
Registriert seit: 24.07.2001
Alter: 47
Beiträge: 801


athropos eine Nachricht über Skype™ schicken
Standard

@renew: modaler dialog hats gebracht, DANKE! (eigentlich hab ich die antwort schon am 20. verfaßt, aber anscheinend hats der server gefressen, entschuldige die Verspätung)


@all: aufgewärmt hab ich den Thread aus folgendem Grund: ich hab immer noch ein Problem mit Threads (und mit der Tatsache, daß sich danach so bequem Googeln lässt )

Wie dem auch sei, nachdem einige Datenbankzugriffe etwas länger dauern, hab ich mir gedacht, daß so ein Fortschrittsbalken doch bequem zu haben wäre. Testhalber hab ich 3 Klassen geschrieben und im Test funktioniert es auch brav (wobei zu sagen ist, daß es nur funzt, wenn ich mit Thread.start() arbeite, bei Thread.run() ärgerlicherweise nicht)

Anbei der Code:
1) Class für den ProgressBar
Code:
public class HelloLoop implements Runnable {

  private int pValue = 0;
  private JFrame frame = new JFrame("Progress Bar Trial");
  private JProgressBar progress = new JProgressBar();
  
  public void setMaximumSize(int max) {
    progress.setMaximum(max);
  }
  public void setActualValue(int val) {
      pValue = val;
  }
  public void disableProgressBar() {
    frame.setVisible(false);
  }
  public void enableProgressBar() {
    frame.setVisible(true);
    pValue = 0;
  }
  public void run() {
      progress.setPreferredSize(new Dimension(250,25));
      progress.setValue(0);
      progress.setStringPainted(true);
      progress.setIndeterminate(false);
      frame.setLayout(new FlowLayout());
      frame.add(progress);
      frame.pack();
      
      while (true) {      
          progress.setValue(pValue);
          try { Thread.sleep(50); }
          catch (InterruptedException e) {}
    }
  }
}
2) Class mit den Datenbankspielereien (es wird einfach ein table kopiert)
Code:
public class HelloDatabase implements Runnable {
    private HelloLoop pbar;
    private int step = 0;
    
    public void setProgressBar(HelloLoop p) {
        pbar = p;
    }    
    public void rumbleDatabase() {
        pbar.setMaximumSize(variable);
        pbar.setActualValue(0);
        pbar.enableProgressBar();
        //query: daten einlesen
        //query: neuen table anlegen
        //query: daten in neuen table einfügen
        //+jeweils erhöhung der zählvariable
        pbar.disableProgressBar();
    } //end rumbleDatabase
    
    public void run() {
        while (true) {
            pbar.setActualValue(step);
            try { Thread.sleep(50); }
            catch (InterruptedException e) {}
      }
    }
}
3) "Main" class mit dem Threadstart
Code:
public class HelloThreads {
  public static void main (String[] args) {
    HelloDatabase  database = new HelloDatabase();
    HelloLoop myProgress = new HelloLoop();
    database.setProgressBar(myProgress);
    
    Thread data = new Thread (database);
    Thread bar = new Thread (myProgress);
    
    data.start();
    bar.start();
    database.rumbleDatabase();
  }
}
Wie gesagt, so funktioniert es ja schon fast zu meiner Zufriedenheit, nur wenn ich das Ganze ins "Hauptprogramm" integriere, wird nur der Rahmen vom Fenster des Fortschrittsbalkens angezeigt aber sonst passiert nix (sprich kein Inhalt und auch keine (optische) Änderung desselben. Outputs in der Kommandozeile würden passen.

Wo liegt der Fehler?
____________________________________
Einstein, Pascal and Newton are playing hide and seek. Einstein is \"it\" so he faces the wall, closes his eyes and counts to π.
Pascal runs off like an idiot but Newton pulls out a piece of chalk and draws a 1m x 1m square on the ground and then stands in it\'s centre.

Einstein\'s done counting and turns around and sees Newton, so he grabs him and screams \"I found Newton!\"

Then Newton smirks and says, \"I\'m not Newton, I\'m Pascal\".
athropos ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:05 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag