Изменение фона кнопки после ее нажатия (т.е. после выполнения действия)
Я пытаюсь изменить фон JButton после его нажатия. В настоящее время мои кнопки расположены в GridLayout (3x3) и выглядят так:
tiles.add(new JButton(new AbstractAction("") {
@Override
public void actionPerformed(ActionEvent e) {
this.setIcon("foo.png");
}
}));
Это не работает. Как мне манипулировать фоном изображения изнутри выполненного действия?
2 ответа
JToggleButton
может быть идеально подходит для этого, как показано на нажатие Swing JToolbarButton
Обратите внимание, что вам нужно будет добавить код, чтобы кнопка была кликабельной только один раз.
В качестве альтернативы вы можете использовать стандарт JButton
и позвонить AbstractButton.setDisabledIcon(Icon)
, Отключите кнопку при нажатии, и она переключится на альтернативный значок.
Вы можете создать свой собственный слушатель, который реализует MouseListener. Таким образом, вы можете контролировать, когда фон кнопки меняется (когда мышь отпущена, нажата и т. Д.). Вот пример
//Add the listener to the button
myButton.addMouseListener(new customActionListener());
//Create the listener
class customActionListener implements MouseListener {
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
Icon icon = new ImageIcon("icon.gif");
myButton.setIcon(icon);
}
public void mouseClicked(MouseEvent e) {
}
}
В любой момент, когда вы хотите установить фон по умолчанию, используйте:
myButton.setIcon(new ImageIcon());