Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!newsfeed.tele2net.at!news.panservice.it!feed.xsnews.nl!border02.ams.xsnews.nl!feeder04.ams.xsnews.nl!feeder01.ams.xsnews.nl!frontend-F09-07.ams.news.kpn.nl From: Cecil Westerhof Newsgroups: comp.lang.java.programmer Subject: Re: Disabling generated buttons Organization: Decebal Computing References: <874mr41ox9.fsf@Equus.decebal.nl> <87vbjkz9df.fsf@Equus.decebal.nl> X-Face: "(y8cC@tg_12{">GF'UXTW]FHI2wMiZNrnf'1EFQ&O#$m:f#O7+7}kR,v+Pti8=Vi/Z"g^?b"E X-Homepage: http://www.decebal.nl/ Date: Mon, 02 Feb 2015 20:25:42 +0100 Message-ID: <87bnlcyv2h.fsf@Equus.decebal.nl> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) Cancel-Lock: sha1:ku9YqSkc2SHGXWNB/h7czp9Vq0k= MIME-Version: 1.0 Content-Type: text/plain Lines: 79 NNTP-Posting-Host: 77.171.42.144 X-Trace: 1422905334 news.kpn.nl 19973 77.171.42.144@kpn/77.171.42.144:38891 Xref: csiph.com comp.lang.java.programmer:31018 Op Monday 2 Feb 2015 19:24 CET schreef FredK: > On Monday, February 2, 2015 at 6:35:48 AM UTC-8, Cecil Westerhof wrote: >> Op Monday 2 Feb 2015 13:24 CET schreef Cecil Westerhof: >> >>> I defined the following class: >>> private enum Colours { >>> Blue(Color.BLUE), >>> Red(Color.RED), >>> Orange(Color.ORANGE), >>> Yellow(Color.YELLOW), >>> Green(Color.GREEN), >>> Cyan(Color.CYAN), >>> Magenta(Color.MAGENTA), >>> Brown(new Color(0x9C, 0x5D, 0x52)), >>> ; >>> >>> private final Color value; >>> >>> Colours(Color value) { >>> this.value = value; >>> } >>> >>> public Color value() { >>> return value; >>> } >>> } >>> >>> I use it to add some (Swing) buttons: >>> for(int i = 0; i < Colours.values().length; ++i) { >>> final Colours colour = Colours.values()[i]; >>> >>> JButton jButton = new JButton("" + colour); >>> >>> add(jButton, gbc); >>> jButton.addActionListener(new ActionListener() { >>> public void actionPerformed(ActionEvent e) { >>> checkColour(colour); >>> } >>> }); >>> gbc.gridx++; >>> if( gbc.gridx == 3 ) { >>> gbc.gridy++; >>> gbc.gridx = 0; >>> } >>> } >>> >>> Those buttons are used to select a colour. But when the wrong >>> colour is selected I want to disable all the buttons for half a >>> second. (Otherwise people could just click very fast at random.) >>> How would I do this? >> >> I hoped that there was a 'smart' way, but probably not. So I >> implemented it in the 'dumb' way. >> >> I created a variable to hold them all: private JButton >> colourButtons[] = new JButton[Colours.values().length]; >> >> I changed the generating into: >> for(int i = 0; i < Colours.values().length; ++i) { >> final Colours colour = Colours.values()[i]; >> >> JButton jButton = new JButton("" + colour); >> >> colourButtons[i] = jButton; >> add(jButton, gbc); > > The above add() saves the buttons, so now you are saving them in two > places. Presumably "this" is some kind of JPanel. The buttons you > added are available by calling this.getComponents() The buttons are on a JFrame, but there are other buttons also on the JFrame and only the Colour buttons should be disabled. That is why I use the array. But I look into a cleaner solution. -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof