} public void launchCalculator() { f.setLayout(new BorderLayout());; f.add("North",l); p.setLayout(new GridLayout(4,4,4,4)); /////////////////////////////////////// for (int i=0;i<b.length;i++) { b[i]=new Button(str[i]); p.add(b[i]); b[i].addActionListener(this); } f.add("Center",p); l.setBackground(Color.yellow); p.setBackground(Color.blue); f.setSize(200,280); f.setVisible(true); } public void actionPerformed(ActionEvent e) { String s=e.getActionCommand(); switch (s.charAt(0)) { case 'E': { MyDialog md=new MyDialog(this,"Really exit ?",true); md.setVisible(true); return; } case 'C': { num=0; break; } case '+': case '-': case '*': case '/': { total=num;op=s;num=0; break; } case '=': { switch (op.charAt(0)) { case '+': {total+=num;num=total;break;} case '-': {total-=num;num=total;break;} case '*': {total*=num;num=total;break;} case '/': {total/=num;num=total;break;} } break; } default: num=num*10+Float.valueOf(s).floatValue(); break; } l.setText((new Float(num)).toString()); }
///////////////////////////////////////////// class MyDialog extends Dialog implements ActionListener { public MyDialog(Frame f,String t,boolean m) { super(f,t,m); Button b1=(new Button("yes")); Button b2=(new Button("no")); b1.addActionListener(this); b2.addActionListener(this); add(b1,"North"); add(b2,"South"); setSize(200,100); } public void actionPerformed(ActionEvent e) { String s=e.getActionCommand(); if(s=="yes") System.exit(0); else if(s=="no") setVisible(false); } } class MyWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { MyDialog md=new MyDialog(f,"Really Exit ?",true); md.setVisible(true); return;
}
}
///////////////////////////////////////////////// public static void main(String[] args) { cal3 guiWindow=new cal3("This is a little Calculator !"); guiWindow.launchCalculator(); } }
外加一下:如果我要按下Ctrl+c或Ctrl+Alt+Delete时这样如何判断?它们区分大小写吗?
从swing/awt的原理到事件监听的方法,和API
也算是一本书了
去买一本 java2图形编程:swing篇吧
80来块,还是很有用的
学些基础的理论再来问具体的问题,更有效率一些
不过,会有一点帮助吧。import java.awt.*;
import java.awt.event.*;public class cal3 extends Frame implements ActionListener
{
private Frame f;
private Label l;
private Panel p;
private Button [] b=new Button[16];
private String str[]={"7","8","9","/","4","5","6","*",
"1","2","3","-","C","=","0","+"};
private String op;
private float total=0,num=0;
public cal3(String title)
{
f=new Frame(title);
p=new Panel();
l=new Label("0",Label.RIGHT);
///////////////////////
MenuBar mb=new MenuBar();
f.setMenuBar(mb);
Menu m=new Menu("File");
mb.add(m);
MenuItem mi=new MenuItem("Exit");
m.add(mi);
mi.addActionListener(this);
f.addWindowListener(new MyWindowListener()); ////////////////////////
}
public void launchCalculator()
{
f.setLayout(new BorderLayout());;
f.add("North",l);
p.setLayout(new GridLayout(4,4,4,4));
///////////////////////////////////////
for (int i=0;i<b.length;i++)
{
b[i]=new Button(str[i]);
p.add(b[i]);
b[i].addActionListener(this);
}
f.add("Center",p);
l.setBackground(Color.yellow);
p.setBackground(Color.blue);
f.setSize(200,280);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
switch (s.charAt(0))
{
case 'E':
{
MyDialog md=new MyDialog(this,"Really exit ?",true);
md.setVisible(true);
return;
}
case 'C':
{
num=0;
break;
}
case '+':
case '-':
case '*':
case '/':
{
total=num;op=s;num=0;
break;
}
case '=':
{
switch (op.charAt(0))
{
case '+':
{total+=num;num=total;break;}
case '-':
{total-=num;num=total;break;}
case '*':
{total*=num;num=total;break;}
case '/':
{total/=num;num=total;break;}
}
break;
}
default:
num=num*10+Float.valueOf(s).floatValue();
break;
}
l.setText((new Float(num)).toString());
}
/////////////////////////////////////////////
class MyDialog extends Dialog implements ActionListener
{
public MyDialog(Frame f,String t,boolean m)
{
super(f,t,m);
Button b1=(new Button("yes"));
Button b2=(new Button("no"));
b1.addActionListener(this);
b2.addActionListener(this);
add(b1,"North");
add(b2,"South");
setSize(200,100);
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if(s=="yes")
System.exit(0);
else if(s=="no")
setVisible(false);
}
}
class MyWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
MyDialog md=new MyDialog(f,"Really Exit ?",true);
md.setVisible(true);
return;
}
}
/////////////////////////////////////////////////
public static void main(String[] args)
{
cal3 guiWindow=new cal3("This is a little Calculator !");
guiWindow.launchCalculator();
}
}
初学的人的无耐。
KeyListener
可帮你解决响应键盘事件的问题建议用堆栈方式解决计算过程问题