求助JAVA程序设计题答案

做一个“计算器”,要求:一、基本要求(必须完成):1.界面设计:设计出一个完整的计算器界面,要求至少有数字按钮(0~9)、运算符按钮(+、-、*、/、=、正负号)、小数点... 做一个“计算器”,要求:一、 基本要求(必须完成):1. 界面设计:设计出一个完整的计算器界面,要求至少有数字按钮(0~9)、运算符按钮(+、-、*、/、=、正负号)、小数点按钮、清0按钮、退格按钮。可模仿Windows自带的计算器或自助进行设计。2. 功能实现:实现各按钮的点击事件处理,能够具备基本的+、-、*、/等功能;注意:小数点的处理(数字里只能出现一个小数点)运算时操作数的提取,结果的处理,显示等;3. 程序结构:面相对象的程序设计思想,将具有共同性质的数据与操作抽象出来定义成相应的类,不要将所有代码写在一个类中4. 代码规范:格式;注释语句;类、方法、变量的命名等。二、 完善要求(可自己创新,加分):可在基本功能实现的基础上增加新的功能,如:1. 给界面添加菜单,实现退出、颜色设置、关于等菜单项功能;2. 增加复杂运算的按钮,如不同进制的数值转换,三角函数等;3. 设置框架图标等;4. 增加文本区,可以将用户进行的运算表达式显示出来;各位大侠帮帮忙吧 不然我又要挂科了·· 展开
 我来答
anrainie
2010-04-28 · TA获得超过1012个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:364万
展开全部
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Caculator extends JFrame implements ActionListener,KeyListener{
private JTextField tf=new JTextField();
private float x=0;
private float y=0;
private int code=0;
private boolean enable;
private boolean first;
private String str="";
public Caculator(){
Container ct=this.getContentPane();
this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
tf.setHorizontalAlignment(JTextField.RIGHT);
//tf.setText("0");
enable=true;
first=true;
ct.add(tf,BorderLayout.NORTH);
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(4,4));
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
if(JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(Caculator.this,"确定要关闭程序吗?","提示",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE)){
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}

}
});
Button btn=null;
btn=new Button("1");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("2");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("3");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("+");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("4");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("5");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("6");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("-");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("7");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("8");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("9");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("*");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("0");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button(".");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("/");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
btn=new Button("=");
panel.add(btn);
btn.addActionListener(this);
btn.addKeyListener(this);
this.add(panel,BorderLayout.CENTER);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Caculator mainframe=new Caculator();
mainframe.setTitle("testing Caculator");
mainframe.setSize(400,400);
mainframe.setVisible(true);

}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand()=="+"){
x= Float.parseFloat(tf.getText());
code=0;
this.tf.setText("");

}
if(e.getActionCommand()=="-"){
x= Float.parseFloat(tf.getText());
code=1;
this.tf.setText("");

}
if(e.getActionCommand()=="*"){
x= Float.parseFloat(tf.getText());
code=2;
this.tf.setText("");

}
if(e.getActionCommand()=="/"){
x= Float.parseFloat(tf.getText());
code=3;
this.tf.setText("");

}

if(e.getActionCommand()!="+"&&e.getActionCommand()!="-"&&e.getActionCommand()!="*"&&e.getActionCommand()!="/"&&e.getActionCommand()!="="){
if(enable){
if(first){
System.out.println("haha");
tf.setText(e.getActionCommand());
first=false;
}
else {
tf.setText(tf.getText()+e.getActionCommand());
}

}

else {
tf.setText(e.getActionCommand());
enable=true;

}
}
if(e.getActionCommand()=="="){
switch(code){
case 0:
y=x+Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 1:
y=x-Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 2:
y=x*Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 3:
y=x/Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
}

}

}
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyChar()=='+'){
x= Float.parseFloat(tf.getText());
code=0;
this.tf.setText("");

}
if(e.getKeyChar()=='-'){
x= Float.parseFloat(tf.getText());
code=1;
this.tf.setText("");

}
if(e.getKeyChar()=='*'){
x= Float.parseFloat(tf.getText());
code=2;
this.tf.setText("");

}
if(e.getKeyChar()=='/'){
x= Float.parseFloat(tf.getText());
code=3;
this.tf.setText("");

}

if(e.getKeyChar()=='1'||e.getKeyChar()=='2'||e.getKeyChar()=='3'||e.getKeyChar()=='0'
||e.getKeyChar()=='4'||e.getKeyChar()=='5'||e.getKeyChar()=='6'||e.getKeyChar()=='.'
||e.getKeyChar()=='7'||e.getKeyChar()=='8'||e.getKeyChar()=='9'){
System.out.println("hai");
if(enable){
if(first){
System.out.println("hehe");
str=Character.toString(e.getKeyChar());
tf.setText(str);
first=false;
}
else {

str=Character.toString(e.getKeyChar());
tf.setText(tf.getText()+str);
}

}

else {

str=Character.toString(e.getKeyChar());
tf.setText(str);
enable=true;

}
}
if(e.getKeyCode()==KeyEvent.VK_ENTER){
switch(code){
case 0:
y=x+Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 1:
y=x-Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 2:
y=x*Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
case 3:
y=x/Float.parseFloat(this.tf.getText());
tf.setText(Float.toString(y));
enable=false;
break;
}

}
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub

}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式