Article View: pl.comp.lang.java
Article #142023Re: Swing - zwatkowany modalny dialog
From: Krzysztof Wolny
Date: Fri, 31 Oct 2008 09:11
Date: Fri, 31 Oct 2008 09:11
58 lines
3088 bytes
3088 bytes
* shio wrote, On 2008-10-31 09:05:
>> IMHO tez dialog nie powinien sam na sobie wolac setVisible(true),
>> powinien to zrobic ktos kto go wywoluje (np. button). Dzieki temu
>> dialog nie 'zawisnie' Ci w konstruktorze na tej metodzie, ale wlasnie
>> poczeka na powrot z dialogu tam gdzie go wywolales, czyli masz to co
>> chciales osiagnac :)
>
> rzeczywiscie takie zalozenie zalatwia sprawe, dotychczas usilnie
> stosowalem podejscie umieszczania setVisible(true) na koncu metody
> inicjujacej formatke, po stworzeniu wszystkich komponentow. Tak bylo
> prosciej.. np z menu aplikacji czy z buttona utworzyc nowy obiekt
> konstruktorem i mozna bylo zapomniec o nim.
Czy prosciej to tez nie wiadomo bo co jesliby formatka miala cos
zwracac? Ja zwykle robilem tak (pseudokod z palca):
btnAddUserActionPerformed()
{
UserDialog ud = new UserDialog(null); //null by odroznic od edycji
ud.setVisible(true); //czekamy az formatka zostanie zamknieta,
obojetnie czy przyciskiem 'dodaj' czy 'anuluj'
ResultEnum result = ud.getResult();
if(result == ResultEnum.OK)
{
User u = ud.getUser();
UserDAO.save(u);
}
}
oczywiscie powyzszy kod wymaga troche dodatkowej logiki w dialogu (ktora
mozna zalatwic w jednym, abstrakcyjnym dialogu) takiej jak zapis kodu
przycisku po nacisnieciu oraz zapis wpisanych danych przy nacisnieciu
'OK', ale to tez w dobie typow generycznych mozna ladnie wyniesc wyzej
do jakiejs abstrakcji i np. getUser() zastapic getObject(), ktory bedzie
zwracal <T>, ktorym bedzie parametryzowany dialog.
ew. mozna zrobic w dialog metode showDialog(), ktora wola setVisible i
zwraca np. kod/enum w jakis sposob dialog zostal zamkniety, wtedy robisz
tak:
UserDialog ud = new UserDialog(null); //null by odroznic od edycji
DialogResult result = ud.showDialog();
if(result == ResultEnum.OK)
{
}
else if(result == ResultEnum.Cancel)
{
}
//itd.
--
Krzysztof Wolny
kkk.wolny@gmail.com (replace 'kkk' with one 'k')
Technical Details
Message-ID:
<geei33$do9$1@news.task.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!not-for-mailReferences:
<Pine.LNX.4.61.0810301053380.1183@altair> <Pine.LNX.4.61.0810301218140.1183@altair> <gec9qr$g8h$1@news.task.gda.pl> <Pine.LNX.4.61.0810310830340.894@altair>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!not-for-mail From: Krzysztof Wolny <kkk.wolny@gmail.com> Newsgroups: pl.comp.lang.java Subject: Re: Swing - zwatkowany modalny dialog Date: Fri, 31 Oct 2008 10:11:54 +0100 Organization: CI TASK http://www.task.gda.pl/ Lines: 58 Message-ID: <geei33$do9$1@news.task.gda.pl> References: <Pine.LNX.4.61.0810301053380.1183@altair> <Pine.LNX.4.61.0810301218140.1183@altair> <gec9qr$g8h$1@news.task.gda.pl> <Pine.LNX.4.61.0810310830340.894@altair> NNTP-Posting-Host: inptr-68-2.comarch.com Mime-Version: 1.0 X-Trace: news.task.gda.pl 1225444259 14089 217.74.68.2 (31 Oct 2008 09:10:59 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Fri, 31 Oct 2008 09:10:59 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17 Mnenhy/0.7.5.0 In-Reply-To: <Pine.LNX.4.61.0810310830340.894@altair> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit