Изменение фона кнопки после ее нажатия (т. Е. После выполнения действия) - PullRequest
2 голосов
/ 05 декабря 2011

Я пытаюсь изменить фон JButton после его нажатия. В настоящее время мои кнопки расположены в GridLayout (3x3) и выглядят так:

tiles.add(new JButton(new AbstractAction("") {
    @Override
    public void actionPerformed(ActionEvent e) {
        this.setIcon("foo.png");
    }
}));

Это не работает. Как мне манипулировать фоном изображения из выполненного действия?

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

A JToggleButton может быть идеальным для этого, как показано на Swing JToolbarButton нажатие

image

Обратите внимание, что вам нужно будет добавить код, чтобы кнопка была кликабельна только один раз.

В качестве альтернативы вы можете использовать стандартный JButton и позвонить AbstractButton.setDisabledIcon(Icon). Отключите кнопку при нажатии, и она переключится на альтернативный значок.

1 голос
/ 05 декабря 2011

Вы можете создать свой собственный слушатель, который реализует 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());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...