Java Editor Klasse wird nicht weiter ausgeführt

eMmiE

Bekanntes Mitglied
Hi,
ich habe ein Problem was wahrscheinlich so im Bereich Swing liegt.

Ich habe ein Programm, das bis zu einer bestimmten Stelle läuft.
An dieser Stelle (habe es mit sysouts überprüft) instanziere ich ein Objekt, welches von JDialog abgeleitet ist.
Bei diesem Objekt führt die VM alles im Konstruktor aus bis zum Aufruf setVisible(true) inklusive.

Was ich danach im Konstruktor für Anweisungen habe oder danach im anderen Hauptprogramm ausführen möchte ist der VM egal. Nach diesem Aufruf steht alles.

Ich habe es jetzt damit versucht, dass ich danach eine einfache Ausgabe mache oder dass ich danach das Objekt finalisiere.

Es wird nichts weiter ausgeführt.

Ich habe kurz ein anderes Programm geschrieben, bei dem dasselbe funktioniert hat und frage mich jetzt, wo mein Fehler liegt

Auch wenn ich das Programm mit der berühmten statischen Methode aus sich starte, dann funktioniert es und es werden auch die Methoden aufgerufen, die nach dem setVisible stehen.

Nur wenn ich das Programm mithilfe eines anderen Programmes starte, kommt dieser Fehler.

EDIT: Wenn ich es in einer anderen Klass in der statischen Methode instanziere und die Methode aufrufe, dann geht es... Wenn ich es im Konstruktor einer anderen Klasse versuche, klappt es nicht.

Erbitte Hilfe :bahnhof:
 
Moin,

ääh 😱 .... bitte was ???:L

Poste mal Deinen Code und beschreibe dann genau wo was nicht funktioniert (rsp. was Deiner Meinung nach dort passieren sollte) ....

Gruß
Klaus
 
Grundlegend geht es um diesen Code:
Code:
System.out.println("tick");
k = new Kaffeeholen(this,true);
System.out.println("tick");
k.progress();

Der wird in einer Klasse, abgeleitet von JFrame aufgerufen.
Kaffeeholen ist von JDialog abgeleitet.

Konstruktor:
Code:
public Kaffeeholen(Frame owner, boolean modal) {
    // Dialog-Initialisierung
    super(owner,"Kaffeeholen", modal);
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
   //--> funktioniert
    setBounds(0,0,300,150)
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    //--> Lädt Bild / funktioniert
    
    // JProgressBar-Objekt wird erzeugt
    meinLadebalken.setBounds(8,30+img.getHeight(),282,25);
    meinLadebalken.setValue(0);
    meinLadebalken.setStringPainted(true);
    cp.add(meinLadebalken);
    //--> Diese JProgressbar soll sich dann von alleine füllen --> Methode progress()

    // Ende Komponenten

    setResizable(false);
    //--> wird aufgerufen
    System.out.println("tock");
    setVisible(true);
    System.out.println("tuck");
    //--> sämtlicher Code hinter dem Dingsda wird nicht mehr aufgerufen
  }

Wenn das Programm an die Stelle kommt (siehe ganz oben),
dann erscheint als Ausgabe
tick
tock
...

Woran liegt das?



Ich habe ein bisschen dran rumprobiert.
Mein Versuch:
Klasse call erzeugt neues Objekt, das von JDialog abgeleitet ist
Dieses Objekt wird ganz normal initialisiert
Jetzt kommt es aber ansheinend darauf an, ob die Methode, die ich automatisch benutzen möchte vor oder nach dem setVisible steht.

Steht sie davor, dann wird die Methode ausgeführt, bevor das Fenster sich zeigt
Steht sie dahinter, dann wird sie erst aufgerufen, wenn das Fenster geschlossen wurde...

Ich möchte aber, dass die Methode ausgeführt wird, während das Fenster offen ist UND, deswegen Dialog, dass das Fenster modal ist.

Diese beiden Eigenschaften lassen sich anscheinend nicht so gut vereinen!

Hilfe?!?

Gruß eMmiE
 
Moin,

Du hast eine modalen Dialog, den Du unten mit "setVisible" sichtbar machst.
Also wartet Dein Programm jetzt auf eine Eingabe in diesem Dialog oder zumindest auf sein Schliessen , ehe die Zeile
Java:
System.out.println("tuck");
und ggf. alles Weitere ausgeführt wird.
genau das ist ja das Prinzip eines modalen Dialogs !!!

Gruß
Klaus
 
Also gibts da quasi keine Möglichkeit ein Fenster zu bauen, was im Vordergrund sichtbar immer wieder repainted wird und dabei z.B. eine JProgressbar fortlaufen lässt.

Das war eigentlich das Ziel...

Aber der modale Dialog ist irgendwie statisch oder so oder warum wird der nicht repainted?

Bin offen für jede Idee

Gruß eMmiE
 

Neue Themen


Zurück
Oben