我一直在为我的学校做一个小程序,但我偶然发现了一个严重的错误。我的问题可能很常见,但我似乎找不到答案。我一直在搞错:
The type Pyramid must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent) 但是我已经在那里实现了这个方法,它的拼写是正确的。我检查了很多次,我的头都疼了。我的项目在这个过程中已经冻结了大约3个小时,我不知道如何让它开始工作。哦,你认为用3个多边形来画金字塔是用java来画金字塔的最好方法吗?
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Pyramid extends Applet implements ActionListener {
int n = 3; // vurhove
double a, k;
double Sok, S, V;
public void init()
{
setLayout(null);
TextField aT; // textbox za osn. rub
aT = new TextField("Osnoven rub", 20);
aT.setBounds(20, 410, 125, 20);
TextField lT; // textbox za ok. rub
lT = new TextField("Okolen rub", 20);
lT.setBounds(20, 460, 125, 20);
TextField SokT; // textbox S ok.
SokT = new TextField("Okolna povurhnina", 20);
SokT.setBounds(20, 510, 125, 20);
TextField ST; // textbox S1
ST = new TextField("Osnovna povurhnina", 20);
ST.setBounds(20, 560, 125, 20);
TextField VT; // textbox za obema
VT = new TextField("Obem", 20);
VT.setBounds(20, 610, 125, 20);
Button ochButton; // izchertava piramidata
ochButton = new Button("Izchertai");
ochButton.setBounds(700, 435, 100, 30);
ochButton.addActionListener(ActionOchButton);
Button oznButton; // ozna4ava vurhovete, izpisva velichinite
oznButton = new Button("Oznachi cherteja");
oznButton.setBounds(700, 510, 100, 30);
oznButton.addActionListener(ActionOznButton);
Button iButton; // iz4islqva veli4inite
iButton = new Button("Izchisli");
iButton.setBounds(700, 585, 100, 30);
iButton.addActionListener(ActioniButton);
add(aT);
add(lT);
add(SokT);
add(ST);
add(VT);
add(ochButton);
add(oznButton);
add(iButton);
Color bg;
bg = new Color(168,168,168);
setBackground(bg);
}
ActionListener ActionOchButton = new ActionListener() {
public void actionPerformed(ActionEvent e){
Graphics g = getGraphics();
int px[] = {340, 440, 490};
int py[] = {235, 335, 235};
g.drawPolygon(px, py, 3);
int px1[] = {340, 415, 490};
int py1[] = {235, 60, 235};
g.drawPolygon(px1, py1, 3);
int px2[] = {440, 415, 490};
int py2[] = {335, 60, 235};
g.drawPolygon(px2, py2, 3);
}
};
ActionListener ActionOznButton = new ActionListener() {
public void actionPerformed(ActionEvent e){
}
};
ActionListener ActioniButton = new ActionListener() {
public void actionPerformed(ActionEvent e){
}
};
public void paint(Graphics g)
{
g.setColor(Color.white);
g.drawRect(20, 20, 780, 370);
}
}发布于 2014-06-08 12:35:54
您应该在您的类中实现该方法。例如,在您的金字塔类的末尾:
@Override
public void actionPerformed(ActionEvent e) {
}
} //End of Pyramid class现在,在这个actionPerformed()方法中,您可以确定单击了哪个按钮并执行适当的操作。但是你必须改变一些事情:
//make these instance variables
Button ochButton; // izchertava piramidata
Button oznButton; // ozna4ava vurhovete, izpisva velichinite
Button iButton; // iz4islqva veli4inite用这种方式添加动作监听器..。
ochButton.addActionListener(this);
oznButton.addActionListener(this);
iButton.addActionListener(this);实现actionPerformed()
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == ochButton) {
System.out.println("ochButton clicked");
} else if (e.getSource() == oznButton) {
System.out.println("oznButton clicked");
} else if (e.getSource() == iButton) {
System.out.println("iButton clicked");
}
}关于画金字塔,也许你可以画出基本的三角形和顶点。然后从顶点到三角形的每个点画线。
发布于 2014-06-08 12:32:27
您还没有实现该方法,简单明了。
您需要在类中定义该方法。您正在添加一组其他操作侦听器,但在您的类中没有实现所需的方法。
为了进一步澄清,在与init()方法相同的级别上,您需要一个public void actionPerformed(ActionEvent e) { /* ... */ }方法。
发布于 2014-06-08 12:33:51
您没有在ActionListener.actionPerformed(ActionEvent)中隐写Pyramid,只有在三个匿名ActionListener实例中。要使Pyramid实现ActionListener,必须在类中实现此方法,而不是在某些局部变量中实现。
https://stackoverflow.com/questions/24106168
复制相似问题