🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #142023

Re: Swing - zwatkowany modalny dialog

#142023
From: Krzysztof Wolny
Date: Fri, 31 Oct 2008 09:11
58 lines
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-mail
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>

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