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);
places. Presumably "this" is some kind of JPanel. The buttons you