所以在我的代码中,我试图创建一个自定义的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);
}
}
答案 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()
方法。