Article View: pl.comp.lang.java
Article #153832Re: Rozróżnianie przycisków
From: Arivald
Date: Mon, 26 Aug 2013 04:45
Date: Mon, 26 Aug 2013 04:45
84 lines
3821 bytes
3821 bytes
W dniu 2013-08-25 23:56, J-23 pisze:
> W dniu 24.08.2013 16:45, Borneq pisze:
>> Chcę napisać przykładowy kalkulator, ale nie zwykły, którego źródła
>> można spotkać w książkach do programowania. Kalkulator będzie miał wiele
>> trybów, naciśnięcie klawisza shift na przykład spowoduje że klawisze
>> przybiorą inne teksty.
>> Chciałem zrobić to tak, że klawiasze będą miały różne tagi: 0,1,2,3,4...
>> Dodatkowo będą rózne kody operacji jak
>> BTN_INV
>> BTN_FRACT
>> BTN_LOG
>> BTN_10_x
>> BTN_LN
>> BTN_e_x
>> Mają być tablice konfiguracji: Jedna to klawisze bez shifta:
>> BTN_INV
>> BTN_LOG
>> BTN_LN
>> A driuga klawiasze z schiftem
>> BTN_FRACT
>> BTN_10_x
>> BTN_e_x
>>
>> Naciskam klawisz, odczutuję jego tag, patrzę w tablicy i odczytuję kod.
>> Ale w JButton nie mam tagów a jedynie rozróżnianie po nazwie:
>> Przykład
>> http://examples.javacodegeeks.com/desktop-java/swing/jbutton/handle-action-events-for-jbutton/
>>
>>
>>
>> JButton button1 = new JButton("Yes");
>> JButton button2 = new JButton("No");
>>
>> //set action listeners for buttons
>> button1.addActionListener(this);
>> button2.addActionListener(this);
>>
>> //add buttons to the frame
>> add(button1);
>> add(button2);A potem rozróznianie public void
>> actionPerformed(ActionEvent ae) {
>> String action = ae.getActionCommand();
>> if (action.equals("Yes")) {
>> System.out.println("Yes Button pressed!");
>> }
>> else if (action.equals("No")) {
>> System.out.println("No Button pressed!");
>> }
>> }Nie za bardzo mi się to podoba, po klawisz moze miec rózny tekst w
>> zależnośc od akcji, natomiast moze być kilka klawiaszyz tym samym
>> tekstem, na przykład pustym.Jak to rozwiązać?
>
> Nie znam Swing co prawda ale wydaje mi się nic prostrzego do robic Tag :)
>
> Dziedzicz po klasie JButton i jazda do przodu
>
> Pozdrawiam
>
... ale czemu przenosić złą praktykę z Delphi do Javy?
do OP:
Dla JButton ustw string komendy:
button.setActionCommand("command");
Będzie on niezależny od tekstu, i to jego używasz w actionPerformed().
BTW jest tyle tutoriali w necie, czemu nie poczytasz?
A jeszcze lepiej jest przygotować obiekty dziedziczące po Action, i to
na nich tworzyć JButtony. Wtedy każdy button może mieć własną metodę
actionPerformed(), albo podobne buttony mogą współdzielić akcję.
A co ważniejsze, kod wyprowadzasz do osobnych klas, zamiast wciskać
wszytko w jedną. Wersja z if () else if() .... jest po prostu nieefektywna.
Przyzwyczaj się że to nie Delphi, tu się tworzy wiele współdziałających
klas.
--
Arivald
Technical Details
Message-ID:
<kvemnh$t1h$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<kvagtq$uai$1@node1.news.atman.pl> <kvdv7p$6v6$1@mx1.internetia.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <NOSPAMarivald@interia.pl> Newsgroups: pl.comp.lang.java Subject: Re: Rozróżnianie przycisków Date: Mon, 26 Aug 2013 06:45:53 +0200 Organization: Dialog Net Lines: 85 Message-ID: <kvemnh$t1h$1@news.dialog.net.pl> References: <kvagtq$uai$1@node1.news.atman.pl> <kvdv7p$6v6$1@mx1.internetia.pl> NNTP-Posting-Host: dynamic-78-8-108-245.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1377492529 29745 78.8.108.245 (26 Aug 2013 04:48:49 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Mon, 26 Aug 2013 04:48:49 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Thunderbird/23.0 In-Reply-To: <kvdv7p$6v6$1@mx1.internetia.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit