HELP Oberfläche friert ein ?!

gemach, gemach, wir sind doch alle Freunde. Schon schlimm genug, dass Micro$oft Cheffe Billy Bob in good old Germany is.
 
sehe ich auch so !

allerdings habe ich mein Problem noch immer nicht lösen können.
Ich schreibe jetzt mal was ich eigentlich vorhabe:

Ich will ein externes Programm, welches über ein Plugin eingebunden wird, überwachen. Dieses Überwachen soll über die Methode isBusy(), welchen mir nen boolean liefert, geschehen.
So weit würde es ja auch funktionieren, allerdings will ich nun auch die Möglichkeit anbieten, das Programm über einen Abbruch Button zu stoppen.

Bis jetzt sieht es strukturell so aus, dass ich ne Klasse Namens Main habe, in der sich auch die GUI befindet. In eben diese GUI wollte ich den AbbruchButton integrieren, allerdings friert die Oberfläche ein, wenn diese Schleife erreicht wird.

Das ist nochmal mein ganzen Problem, wäre nett wenn einer ne andere Möglichkeit wüsste !

Da ich das andere Programm nicht kenne kann ich nich
 
Probier's doch mal so:

Mainklasse:
Konstruktor aufrufen, da werden dann 2 Threads erzeugt, die du startest, mehr nich.

1. Thread: Klasse MYGUI
Hier machste deine GUI und den Abbruch Button rein.

2. Thread: Hier ne Klasse mit deiner Schleife

Zusätzlich eine Klasse mit Singleton, also hast du nur ein Objekt dieser Klasse.
Da hinterlegste ne Boolean "aborted" oder so. Wenn die actionPerformed aufgerufen wird, rufste die SingletonMethode auf, setzt die boolean auf true.

Jetzt mußte nur noch die Abfrage der boolean in deine Schleife einbauen.
also:
Code:
while(ueberwacher.getBusy() && !(einzelnesObjekt.getInstance().getAborted()){
   	 //irgendwas machen
   }

So würd ich das als rookie auf die Schnelle machen. Hilft das?
 
so, hab das Problem gelöst indem ich es in eine Extra Klasse geschrieben habe. Nun allerdings gleich wieder das nächste Problem, ich kann den Thread nicht anhalten !

Habe .interrupt() und .destroy() versucht (wird in der Methode parent.abort() aufgerufe) , beides Erfolglos, der Thread läuft einfach weiter.
Der Thread wird wie folgt erzeugt und gestartet :

Code:
      Thread checkThread = new CheckStatus(selectedPlugin,this);
      checkThread.start();

Code:
public class CheckStatus
    extends Thread {

  PluginInterface toCheck;
  Gui parent;

  public CheckStatus(PluginInterface pi, Gui p) {
    toCheck = pi;
    parent =p;
  }

  public void run() {
    boolean hasStatus = toCheck.hasStatus();
    while (toCheck.isBusy()) {
      try {
        Thread.sleep(1500);
        if(hasStatus){
          parent.getStatusArea().append(toCheck.getStatus()+"\n");
        }
      }
      catch (Exception ex) {
        System.out.println(ex.getMessage());
      }
    }
    parent.abort();
  }
}

So sieht der Thread aus, der nicht stoppt !
Keine Ahnung warum !

HELP

MfG

Marius Meuser
 
Zuletzt bearbeitet:
Hat sich erledigt, das lag daran, dass ich die Funktionalität der interrupt() Methode falsch verstanden
hatte bzw. daran, dass sich das interrupted Flag des Threads bei der sleep Methode Resetted.

Mfg

Marius Meuser
 
Zurück