Article View: pl.comp.lang.java
Article #154213Re: Jak wywoływać programy w Javie ?
From: Borneq
Date: Mon, 13 Jul 2015 05:58
Date: Mon, 13 Jul 2015 05:58
50 lines
2859 bytes
2859 bytes
W dniu 2015-07-13 o 02:49, Pit pisze:
> Jeśli nie zamyka się po zakończeniu programu, to znaczy, że... program się
> nie kończy, a jedynie zamykasz okienko programu (maszyna wirtualna chodzi
> dalej). Na pewno prawidłowo obsługujesz kliknięcie w "krzyżyk" głównego
> okienka programu? Sprawdź w procesach :D
Masz rację, nie kończy się, w Eclipse zostaje czerwony kwadrat. A
poprawiałem wyjątek na zakończenie bo pojawiał się w display.dispose()
gdy bl włączony timer, teraz timer przez zwolnieniem timer stopuję:
display.timerExec(-1, timer);
Robię w SWT według książki Adama Bochenka "Eclipse. Biblioteka SWT".
public class MidPlayerApp {
public static void main(String[] args) {
Display display = new Display();
new MainWindow();
display.dispose();
}
}
Więcej robię w kreatorze MainWindow, aby nie robić wszystkiego w Main.
To też ma wadę bo ten kreator ni kończy się przez całe trwanie programu.
public MainWindow() {
display = Display.getCurrent();
shell = new Shell(display);
init(); //creates components
shell.open();
startEventLoop();
commandsPlayback.stop();
display.timerExec(-1, timer); //stop timer before display.dispose();
to avoid error
}
private void startEventLoop() {
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
}
Już wiem! Obsługuję midi i przed końcem wołam co prawda sequencer.stop()
aby nie została mi muzyka ale nie zamykałem go.
Teraz po zamknięciu program się zamyka. Dzięki konsoli zobaczyłem że coś
nie gra, bło mnóstwo otwartych javaw. Co ciekawe Eclipse było otwarte
przez Eclipse.exe a nie przez javaw (może dlatego "aż" 300 kilo)
Już po zamknięciu konsola się zamyka.
Ale nie wiem, dlaczego w ogóle się otwiera, nie tylko dla java ale i dla
javaw, mimo że wyrzuciłem dwa wywołania println i nic nie wypisuje na
konsolę.
Technical Details
Message-ID:
<mnvk1v$mcq$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<mnus1o$r32$1@node2.news.atman.pl> <slrnmq62oc.24j.nospam@nc10.lan>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Borneq <borneq@antyspam.hidden.pl> Newsgroups: pl.comp.lang.java Subject: Re: Jak wywoływać programy w Javie ? Date: Mon, 13 Jul 2015 07:58:22 +0200 Organization: ATMAN - ATM S.A. Lines: 50 Message-ID: <mnvk1v$mcq$1@node1.news.atman.pl> References: <mnus1o$r32$1@node2.news.atman.pl> <slrnmq62oc.24j.nospam@nc10.lan> NNTP-Posting-Host: 91.239.205.105 Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1436767103 22938 91.239.205.105 (13 Jul 2015 05:58:23 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Mon, 13 Jul 2015 05:58:23 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 In-Reply-To: <slrnmq62oc.24j.nospam@nc10.lan> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit