🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Rozróżnianie przycisków

#153832
From: Arivald
Date: Mon, 26 Aug 2013 04:45
84 lines
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-mail
References: <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