我不断收到错误,我无法向对象添加动作侦听器。我正在尝试将其添加到我的主框架中,以便将其设置在正确的位置。
public class Grid extends JPanel{
public Grid (String title){
setLayout(null);
setSize(295,295);
setLocation(10,10);
buttons = new JButton[5][5];
for(int row=0; row<5; row++) {
for(int col=0; col<5; col++) {
buttons[row][col] = new JButton();
buttons[row][col].setLocation(5+col*55, 5+row*55);
buttons[row][col].setSize(50,50);
buttons[row][col].setBackground(colours[randCol()]);
buttons[row][col].addActionListener(this);
add(buttons[row][col]);
}
}
}
}
答案 0 :(得分:4)
我已经在网格类中实现了actionlistener并且我收到了这个,cgame.Grid不是抽象的,并且不会覆盖java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent)
这是因为每当一个类实现一个接口时,它需要从接口 覆盖 所有可用的抽象方法(无论你是否有兴趣使用它)
在ActionListener
的界面下,有一个抽象方法
actionPerformed(ActionEvent)
如果 Grid 类实现了 ActionListener ,那么它也会覆盖它:
class Grid extends JPanel implements ActionListener{
//your other attributes, initializations & constructors..
@Override
public void actionPerformed(ActionEvent e){
//your actions..
}
}
我建议你为Grid类使用Layout。从您的班级Grid
的命名。如果您打算将组件排列成类似大小的框(或网格),则可以考虑使用 GridLayout 。或者,如果您的某些网格具有不同的宽度和/或高度,您可以考虑 GridBagLayout 。
答案 1 :(得分:0)
您必须在Grid类中实现ActionListener
类。只有这样,您才能将此传递给addActionListener()
方法。
答案 2 :(得分:0)
你必须实现ActionListener类
chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea().getWidth();
现在工作正常
答案 3 :(得分:0)
ActionListener
是一个接口,因此您必须覆盖所有方法。我认为这很明显,这就是为什么我没有明确指出这一点。对不起,但你必须知道。如果你有implements
,那么它总是一个接口,你必须实现它包含的所有方法。这是Java中的基本规则之一。