如何将ActionListener添加到自定义对象

时间:2019-01-24 01:01:43

标签: java swing actionlistener

所以在我的代码中,我试图创建一个自定义的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 :(得分:1)

虽然您可以添加自己的方法来实现ActionListener,但我怀疑这可能不是您想要的。根据您要响应的事件,您将需要使用不同的方法来添加侦听器。

例如,如果要响应标签上的单击,则需要MouseListener

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

取决于您要响应的内容,还有很多其他版本。建议您阅读https://docs.oracle.com/javase/tutorial/uiswing/events/index.html的教程章节以获取更多示例。

答案 1 :(得分:0)

JLabel没有kwargs['id'] = 1 kwargs['time'] = '2018-01-01 00:00:00' update_kwargs[field1] = 12.34 instance, created = MyTable.objects.update_or_create(**kwargs, defaults=update_kwargs) 方法,并且您的Tile类扩展了JLabel。正如@MadProgrammer所说,您可以根据需要为自己的Tile类定义自己的addActionListener()方法。