代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class JFrameCalculator{
public static void main(String args[]){
JFrameCalculatorClass JFC=new JFrameCalculatorClass();
JFC.CalculatorDisplay();
}
}class JFrameCalculatorClass extends JFrame{
double result;
boolean start;
String lastStrMethod;
Container container=getContentPane();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JTextField txtField=new JTextField("0",24);
JButton []btn=new JButton[11];
ActionListener btnNumAction=new NumberCountAction();
ActionListener CountMethod=new CountMethodClass();
//构造函数
JFrameCalculatorClass(){
result=0;
start=true;
lastStrMethod="=";
p1.add(txtField);
btn[0]=new JButton("1");
btn[1]=new JButton("2");
btn[2]=new JButton("3");
btn[3]=new JButton("4");
btn[4]=new JButton("5");
btn[5]=new JButton("6");
btn[6]=new JButton("7");
btn[7]=new JButton("8");
btn[8]=new JButton("9");
btn[9]=new JButton("0");
btn[10]=new JButton("."); p2.setLayout(new GridLayout(4,3,7,7));
for(int i=0;i<11;i++){
btn[i].addActionListener(btnNumAction);
p2.add(btn[i]);
}
addButton("+",CountMethod);
addButton("-",CountMethod);
addButton("*",CountMethod);
addButton("/",CountMethod);
addButton("=",CountMethod); }
//实例化数字按键
void addButton(String method,ActionListener listener){
JButton btn=new JButton(method);
btn.addActionListener(listener);
p3.add(btn);
}
//构建窗体
public void CalculatorDisplay(){
container.add(new JLabel(" "),BorderLayout.WEST);
container.add(new JLabel(" "),BorderLayout.EAST);
container.add(p1,BorderLayout.NORTH);
container.add(p2,BorderLayout.CENTER);
container.add(p3,BorderLayout.SOUTH);
setSize(300,250);
setLocation(250,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
//获得文本框内的数据
class NumberCountAction implements ActionListener{
public void actionPerformed(ActionEvent e){
String input=e.getActionCommand();
if(start){
txtField.setText("");
start=false;
}
txtField.setText(txtField.getText()+input);
}
}
//设置文本框输入符号
class CountMethodClass implements ActionListener{
public void actionPerformed(ActionEvent e){
String strMethod=e.getActionCommand();
if(start){
if(strMethod.equals("-")){
txtField.setText(strMethod);
start=false;
}else{
lastStrMethod=strMethod;
}
}else{
Calculate(Double.parseDouble(txtField.getText()));
lastStrMethod=strMethod;
start=true;
}
}
}
//计算方法
public void Calculate(double x){
if(lastStrMethod.equals("+")){
result=result+x;
}else if(lastStrMethod.equals("-")){
result=result-x;
}else if(lastStrMethod.equals("*")){
result=result*x;
}else if(lastStrMethod.equals("/")){
result=result/x;
}else if(lastStrMethod.equals("=")){
result=x;
}
txtField.setText(""+result);
}
}最后的计算方法始终不明白.望各位解答.多谢!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class JFrameCalculator{
public static void main(String args[]){
JFrameCalculatorClass JFC=new JFrameCalculatorClass();
JFC.CalculatorDisplay();
}
}class JFrameCalculatorClass extends JFrame{
double result;
boolean start;
String lastStrMethod;
Container container=getContentPane();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JTextField txtField=new JTextField("0",24);
JButton []btn=new JButton[11];
ActionListener btnNumAction=new NumberCountAction();
ActionListener CountMethod=new CountMethodClass();
//构造函数
JFrameCalculatorClass(){
result=0;
start=true;
lastStrMethod="=";
p1.add(txtField);
btn[0]=new JButton("1");
btn[1]=new JButton("2");
btn[2]=new JButton("3");
btn[3]=new JButton("4");
btn[4]=new JButton("5");
btn[5]=new JButton("6");
btn[6]=new JButton("7");
btn[7]=new JButton("8");
btn[8]=new JButton("9");
btn[9]=new JButton("0");
btn[10]=new JButton("."); p2.setLayout(new GridLayout(4,3,7,7));
for(int i=0;i<11;i++){
btn[i].addActionListener(btnNumAction);
p2.add(btn[i]);
}
addButton("+",CountMethod);
addButton("-",CountMethod);
addButton("*",CountMethod);
addButton("/",CountMethod);
addButton("=",CountMethod); }
//实例化数字按键
void addButton(String method,ActionListener listener){
JButton btn=new JButton(method);
btn.addActionListener(listener);
p3.add(btn);
}
//构建窗体
public void CalculatorDisplay(){
container.add(new JLabel(" "),BorderLayout.WEST);
container.add(new JLabel(" "),BorderLayout.EAST);
container.add(p1,BorderLayout.NORTH);
container.add(p2,BorderLayout.CENTER);
container.add(p3,BorderLayout.SOUTH);
setSize(300,250);
setLocation(250,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
//获得文本框内的数据
class NumberCountAction implements ActionListener{
public void actionPerformed(ActionEvent e){
String input=e.getActionCommand();
if(start){
txtField.setText("");
start=false;
}
txtField.setText(txtField.getText()+input);
}
}
//设置文本框输入符号
class CountMethodClass implements ActionListener{
public void actionPerformed(ActionEvent e){
String strMethod=e.getActionCommand();
if(start){
if(strMethod.equals("-")){
txtField.setText(strMethod);
start=false;
}else{
lastStrMethod=strMethod;
}
}else{
Calculate(Double.parseDouble(txtField.getText()));
lastStrMethod=strMethod;
start=true;
}
}
}
//计算方法
public void Calculate(double x){
if(lastStrMethod.equals("+")){
result=result+x;
}else if(lastStrMethod.equals("-")){
result=result-x;
}else if(lastStrMethod.equals("*")){
result=result*x;
}else if(lastStrMethod.equals("/")){
result=result/x;
}else if(lastStrMethod.equals("=")){
result=x;
}
txtField.setText(""+result);
}
}最后的计算方法始终不明白.望各位解答.多谢!
看看这个功能比较全点
我还有功能更全的详细代码如下:
/*编程实现一个简单的计算器,它包括0-9的数字按钮,加、减、乘、除、清零、等号几个简单运算按钮和一个显示最后结果的文本区域
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; public class Calculator extends JFrame { private Container container;
private GridBagLayout layout;
private GridBagConstraints constraints;
private JTextField displayField;//计算结果显示区
private String lastCommand;//保存+,-,*,/,=命令
private double result;//保存计算结果
private boolean start;//判断是否为数字的开始 public Calculator() { super("Calculator");
container=getContentPane();
layout=new GridBagLayout();
container.setLayout(layout);
constraints=new GridBagConstraints();
start=true;
result=0;
lastCommand = "=";
displayField=new JTextField(20);
displayField.setHorizontalAlignment(JTextField.RIGHT);
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=4;
constraints.gridheight=1;
constraints.fill=GridBagConstraints.BOTH;
constraints.weightx=100;
constraints.weighty=100;
layout.setConstraints(displayField,constraints);
container.add(displayField);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
addButton("Backspace",0,1,2,1,insert);
addButton("CE",2,1,1,1,insert);
addButton("C",3,1,1,1,insert);
addButton("7",0,2,1,1,insert);
addButton("8",1,2,1,1,insert);
addButton("9",2,2,1,1,insert);
addButton("/",3,2,1,1,command);
addButton("4",0,3,1,1,insert);
addButton("5",1,3,1,1,insert);
addButton("6",2,3,1,1,insert);
addButton("*",3,3,1,1,command);
addButton("1",0,4,1,1,insert);
addButton("2",1,4,1,1,insert);
addButton("3",2,4,1,1,insert);
addButton("-",3,4,1,1,command);
addButton("0",0,5,1,1,insert);
addButton("+/-",1,5,1,1,insert);//只显示"-"号,"+"没有实用价值
addButton(".",2,5,1,1,insert);
addButton("+",3,5,1,1,command);
addButton("=",0,6,4,1,command);
setSize(400,400);
setVisible(true); }
private void addButton(String label,int row,int column,int with,int height,ActionListener listener) { JButton button=new JButton(label);
constraints.gridx=row;
constraints.gridy=column;
constraints.gridwidth=with;
constraints.gridheight=height;
constraints.fill=GridBagConstraints.BOTH;
button.addActionListener(listener);
layout.setConstraints(button,constraints);
container.add(button);
}
private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input=event.getActionCommand();
if (start) {
displayField.setText("");
start=false;
if(input.equals("+/-"))
displayField.setText(displayField.getText()+"-");
} if(!input.equals("+/-")) {
if(input.equals("Backspace")) {
String str=displayField.getText();
if(str.length()>0)
displayField.setText(str.substring(0,str.length()-1));
}else if(input.equals("CE")||input.equals("C")) {
displayField.setText("0");
start=true;
}else
displayField.setText(displayField.getText()+input);
}
}
}
private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) {
String command=evt.getActionCommand();
if(start) {
lastCommand=command;
}else {
calculate(Double.parseDouble(displayField.getText()));
lastCommand=command;
start=true;
}
}
} public void calculate(double x) {
if (lastCommand.equals("+")) result+= x;
else if (lastCommand.equals("-")) result-=x;
else if (lastCommand.equals("*")) result*=x;
else if (lastCommand.equals("/")) result/=x;
else if (lastCommand.equals("=")) result=x;
displayField.setText(""+ result);
} public static void main(String []args) {
Calculator calculator=new Calculator();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} }
对于最后的结果不理解.