我在代码中遇到了障碍。这是手中的课程。
public class StartRoom extends Room implements ActionListener {
JButton buttonTwo;
public StartRoom() {
start();
buttonOne = new JButton("Go to door.");
buttonTwo = new JButton("Look at skeleton.");
label = new JLabel("You walk into the dungeon, the room is covered with vines. There is a skeleton sitting near the northern door. What do you do?");
panelOne.add(label);
panelOne.add(buttonOne);
buttonOne.addActionListener(this);
buttonTwo.addActionListener(this);
}
class MyActionListener implements ActionListener {
@Override
public void actionPerformed(java.awt.event.ActionEvent ae) {
}
}
public static void main( String[]args ) {
new StartRoom();
}
}
它说类型StartRoom必须在第五行实现继承的抽象方法java.awt.event.ActionListener.actionPerformed(java.awt.event.ActionEvent)
,但我无法弄清楚它的问题!
答案 0 :(得分:2)
StartRoom implements ActionListener
表示StartRoom
应该承担ActionListener
的合同。方法actionPerformed( ActionEvent)
必须由您自己实施。
public class StartRoom extends Room implements ActionListener {
...
@Override
public void actionPerformed(java.awt.event.ActionEvent ae) {
// your code here....
}
}
例如,如果要委托其他类MyActionListener
,则必须更改buttonTwo.addActionListener(this);
中的使用情况,将this
替换为MyActionListener
的实例。
MyActionListener toto = new MyActionListener();
buttonTwo.addActionListener( toto );
在后一种情况下,您应该从implements ActionListener
类声明中删除StartRoom
。
答案 1 :(得分:0)
当您实现某些东西时,您正在使用该类作为接口,这意味着您必须使用并重新定义您正在实现的类中的每个方法。但是,如果您希望按原样使用该类的方法,那么您可以扩展它并使该类成为您类的超类。请记住,您只能扩展一个类,但可以将大量类作为接口实现。