Как добавить ActionListener в самоопределяемый объект - PullRequest
0 голосов
/ 24 января 2019

Итак, в моем коде я пытался создать самоопределяемый объект Tile. Я хотел поместить слушатель действия в конструктор для объекта Tile, но именно здесь все идет не так. Я получаю ошибку The method addActionListener(Tile) is undefined for the type Tile. Что означает эта ошибка, и есть ли способ исправить ее, не переключаясь на другой тип слушателя?

public class Tile extends JLabel implements ActionListener{

public Tile(int x, int y, Color c){
    this.x = x;
    this.y = y;
    setBorder(BorderFactory.createLineBorder(Color.black));
    setMinimumSize(size);
    setMaximumSize(size);
    setPreferredSize(size);
    setOpaque(true);
    setBackground(c);
    addActionListener(this);
}
public void actionPerformed(ActionEvent arg0) {
    changeColor(Color.red);     
}

}

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Хотя вы можете добавить свои собственные методы для реализации ActionListener Я подозреваю, что это, вероятно, не то, что вы хотите. В зависимости от того, на какое событие вы хотите ответить, вам нужно будет использовать разные методы для добавления слушателя.

Например, если вы хотите отреагировать на клик по ярлыку, вам нужно MouseListener.

addMouseListener(new MouseAdapater() {
    @Override
    public void mouseClicked(MouseEvent event) {
        ...
    }
});

Есть много других версий этого в зависимости от того, на что вы хотите ответить. Я предлагаю вам прочитать главу учебника в https://docs.oracle.com/javase/tutorial/uiswing/events/index.html для большего количества примеров.

0 голосов
/ 24 января 2019

Нет метода addActionListener() для JLabels, и ваш класс Tile расширяет JLabel.Как сказал @MadProgrammer, вы можете сами определить свои addActionListener() методы для своего класса Tile.

...