这是我的代码。
import java.awt.*;
import java.awt.event.*;
public class Finals extends Frame implements WindowListener,ActionListener{
public TextField tf1;
public Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnadd,btnminus,btndivide,btnmultiply,btnequals,btnbackspace;
public Finals(){
Panel outputpanel = new Panel(new FlowLayout());
tf1 = new TextField(" ",30);
outputpanel.add(tf1);
Panel btnpanel = new Panel(new GridLayout (5,5));
btn0 = new Button ("0");
btn1 = new Button ("1");
btn2 = new Button ("2");
btn3 = new Button ("3");
btn4 = new Button ("4");
btn5 = new Button ("5");
btn6 = new Button ("6");
btn7 = new Button ("7");
btn8 = new Button ("8");
btn9 = new Button ("9");
btnadd= new Button("+");
btnminus = new Button("-");
btndivide = new Button ("/");
btnmultiply = new Button ("*");
btnequals = new Button ("=");
btnbackspace= new Button("<-");
btnpanel.add(btnadd);
btnpanel.add(btnminus);
btnpanel.add(btndivide);
btnpanel.add(btnmultiply);
btnpanel.add(btnequals);
btnpanel.add(btnbackspace);
btnpanel.add(btn1);
btnpanel.add(btn2);
btnpanel.add(btn3);
btnpanel.add(btn4);
btnpanel.add(btn5);
btnpanel.add(btn6);
btnpanel.add(btn7);
btnpanel.add(btn8);
btnpanel.add(btn9);
btnpanel.add(btn0);
setLayout(new BorderLayout());
add(outputpanel,BorderLayout.NORTH);
add(btnpanel,BorderLayout.SOUTH);
setVisible (true);
setSize (300,200);
setTitle("Calculator");
setLocationRelativeTo(null);
setResizable(false);
addWindowListener(this);
}
public static void mainr(String[]args){
Finals awt = new Finals();
}
public void windowClosing(WindowEvent we){
System.exit(0);
}
public void windowClosed(WindowEvent we){};
public void windowOpened(WindowEvent we){};
public void windowIconified(WindowEvent we){};
public void windowDeiconified(WindowEvent we){};
public void windowActivated(WindowEvent we){};
public void windowDeactivated(WindowEvent we){};
}
答案 0 :(得分:1)
您已实现了界面ActionListener
,因此需要覆盖该界面中的actionPerformed
方法,否则请将您的类声明为abstract
。
@Override
public void actionPerformed(ActionEvent e) {
//your code goes here
}
答案 1 :(得分:1)
如果您要implements
interface
(ActionListener
),那么您需要@Override所有方法。在这种情况下,您需要为actionPerfomed
类
Finals
方法
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
此外,public static void mainr(String[]args){
是什么? mainr
应为main
此外,请使用@Override
anotation,因此您知道已成功覆盖某个方法,即
@Override
public void windowClossing(WindowEvent e) {}
此外,Swing应用程序应该在Event Dispatch Thread(EDT)上运行。您可以使用main
封装SwingUtilities.invokeLater...
方法的内部来完成此操作。详情请见Initial Threads
此外,您应该在 setVisible(true)
和setSize
setLocationXxx
此外,您应该只pack()
您的框架,而不是setSize()
,以便所有组件确定可见。
另外,为什么AWT而不是Swing?考虑使用Swing。详情请见Creating GUI with Swing