🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Jak nie reagować na kliknięcie buttona w Swingu?

#154234
From: Pit
Date: Thu, 23 Jul 2015 13:14
35 lines
2219 bytes
Dnia 23.07.2015 Borneq <borneq@antyspam.hidden.pl> napisał/a:
> Ma przycisk, którego naciśnięcie powoduje uruchomienie dość długiej 
> procedury, tak z 5 sekund. Gdy kliknę na niego kilka razy szybko, 
> procedura zostaje uruchamiana wielokrotnie od początku. Próbowałem 
> setEnabled(false):
>          buttonBench.addActionListener( new ActionListener()
> 	{
> 		public void actionPerformed(ActionEvent e)
> 		{
> 		    	buttonBench.setEnabled(false);
> 		    	if (originalName!=null)
> 		    		printBenchmarks(originalName);
> 		    	buttonBench.setEnabled(true);
> 		}
> 	});
>
> ale coś się dzieje - gromadzi kliknięcia na zablokowanym przycisku i 
> nadal jest źle. Może da się napisać klasę buttona dziedziczącą z JButton 
> gdzie to było by poprawione?

Jeśli poczytasz API dla javax.swing.JComponent.setEnabled (boolean) , to
znajdziesz tam:
Note: Disabling a lightweight component does not prevent it from receiving
MouseEvents.
Wszyskie komponenty Swing są "lightweights" więc będą odbierać myszkę nawet
jeśli są wyłączone (z wszelkimi tego konsekwencjami), dlatego jeśli już
miałbym do tego podejść na Twój sposób, to bym to zrobił na zasadzie:

public void actionPerformed(ActionEvent e) {
  if(buttonBench.isEnabled()) {
    buttonBench.setEnabled(false);
    tu_akcja();
    buttonBench.setEnabled(true);
  }
}
Technical Details
Message-ID: <slrnmr1q5d.24q.nospam@nc10.lan>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <moqiri$b1f$1@node2.news.atman.pl>

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: Pit <nospam@sdf.lonestar.org>
Newsgroups: pl.comp.lang.java
Subject: Re: Jak nie reagować na kliknięcie
 buttona w Swingu?
Date: Thu, 23 Jul 2015 13:14:21 +0000 (UTC)
Organization: ATMAN - ATM S.A.
Lines: 36
Message-ID: <slrnmr1q5d.24q.nospam@nc10.lan>
References: <moqiri$b1f$1@node2.news.atman.pl>
NNTP-Posting-Host: user-164-127-70-12.play-internet.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1437657261 28474 164.127.70.12 (23 Jul 2015 13:14:21 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Thu, 23 Jul 2015 13:14:21 +0000 (UTC)
User-Agent: slrn/1.0.1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit