Main-Methode aus anderer Klasse heraus starten

Snaiper

Mitglied
Liebe Community,

Nach unzähligen Google-Versuchen steh ich jetzt kurz vor einem Anfall und vertrau einfach mal auf euer wissen xD
Mein Problem ist folgendes:

Ich habe eine GUI erstellt, die durch eine andere Klasse aufgerufen wird. Diese GUI soll jetzt beim Klick eines Buttons die main-Methode einer anderen Klasse aufrufen... Der Methodenkopf sieht aus wie folgt:

Java:
public static void main(String[] args) throws IOException, AWTException{
...
}

Wiegesagt will ich jetzt diese Methode von der GUI aus aufrufen, doch funktioniert das in keinster Weise...
Fehlermeldung:

main(java.lang.String[]) in KLASSE cannot be applied to()

Ich hoffe ihr könnt mir helfen.[DUKE]Help![/DUKE]

LG,
Snaiper
 
Java:
Klasse.main(null);
wenn du keine Argumente übergeben willst.

...sonst
Java:
Klasse.main(new String[] {"arg1", "arg2", "etc."});
 
Der Teil haut jetzt hin^^ Aber es folgt sogleich diese Fehlermeldung bei KLASSE.main(null);

unreported exception java.io.IOException; must be caught or declared to be thrown

Setze ich nun
throws java.io.IOException
dran, bemängelt BlueJ gleich die zweite Zeile:

Java:
public void actionPerformed(ActionEvent evt){
        jButton1_ActionPerformed(evt);
      }
Die Fehlermeldung ist dieselbe wie schon oben genannt. Demzufolge habe ich throws also auch hier in den Methodenkopf geschrieben, die dabei ausgegebene Fehlermeldung ist unten angehängt.

LG,
Snaiper

nhg4a8gb.jpg
 
Wenn die Exception nicht deklariert werden kann, dann muss es eben die andere Alternative sein, die der Compiler als Lösungsmöglichkeit vorschlägt: ein try-catch-Block.
 
Vielen Dank für die schnellen Antworten, es klappt jetzt 🙂

Eine Frage hätte ich dann aber noch:

Wenn ich auf einer grafischen oberfläche einen Button betätige, der eine while-Schleife in einer anderen Klasse ausführt, ist es mir ja normalerweise nicht möglich einen zweiten Button zu drücken, der z.B. eine andere Aktion ausführt.

=> Gibt es eine Möglichkeit, dass man während der Laufzeit der ersten Aktion eine zweite starten kann?

LG und danke nochmal,
Snaiper
 
Normalerweise sollte man niemals lang laufende Aktionen direkt aus dem Thread heraus starten, in dem die Event-Behandlung erfolgt, denn sonst gibt es genau den von Dir beobachteten Effekt: die Oberfläche friert quasi ein und ist erst dann wieder bedienbar, wenn die Aktion beendet ist.
Daher lässt man beim Klick auf den Button die lang laufende Aktion in einem anderen Thread laufen; so ist das GUI gleich wieder bedienbar, auch wenn die Aktion noch nicht beendet ist.
 
Z.B. so:

Statt eine Methode direkt aufzurufen
Java:
public void actionPerformed(ActionEvent evt){
        doSomething(evt);
      }

kann man sie in einem eigenen Thread ausführen lassen:
Java:
public void actionPerformed(final ActionEvent evt){
        new Thread( new Runnable(){
          public void run() {
            doSomething(evt);
          }
        }).start();
      }
 

Zurück
Oben