小弟我刚学java不久,就模仿写了一个计算器的applet程序,但是没有办法进行运算
请问为什么?还有对于程序中为什么要用getActionCommand,请指点一下 谢谢
以下是主程序
package Applet;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;/**
* Created by IntelliJ IDEA.
* User: YoYO
* Date: 2005-9-22
* Time: 14:06:24
* To change this template use File | Settings | File Templates.
*/
public class CaculatorPane extends JPanel{
private JLabel display;
private JPanel panel;
private boolean start;
private String lastCommand;
private double result;
public CaculatorPane()
{
setLayout(new BorderLayout());
display=new JLabel("0");
add(display,BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAcion();
panel =new JPanel();
panel.setLayout(new GridLayout(4,4,3,3));
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/",command); addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*",command); addButton("3",insert);
addButton("2",insert);
addButton("1",insert);
addButton("-",command); addButton("0",insert);
addButton(".",insert);
addButton("=",command);
addButton("+",command);
add(panel,BorderLayout.CENTER);
start=true;
} private void addButton(String label, ActionListener listener) {
JButton button=new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener{ public void actionPerformed(ActionEvent e) {
//To change body of implemented methods use File | Settings | File Templates.
String input=e.getActionCommand();
// result=Double.parseDouble(input);
if(start){
display.setText(" ");
start=false;
}
display.setText(display.getText()+input);
}
}
private class CommandAcion implements ActionListener{ public void actionPerformed(ActionEvent ev) {
//To change body of implemented methods use File | Settings | File Templates.
String command=ev.getActionCommand();
if(start){
if(command.equals("-")){display.setText(command);
start=false;}
else display.setText(" ");}
else{
caculator(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
}
public void caculator(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;
display.setText(" "+result);
}
}
请问为什么?还有对于程序中为什么要用getActionCommand,请指点一下 谢谢
以下是主程序
package Applet;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;/**
* Created by IntelliJ IDEA.
* User: YoYO
* Date: 2005-9-22
* Time: 14:06:24
* To change this template use File | Settings | File Templates.
*/
public class CaculatorPane extends JPanel{
private JLabel display;
private JPanel panel;
private boolean start;
private String lastCommand;
private double result;
public CaculatorPane()
{
setLayout(new BorderLayout());
display=new JLabel("0");
add(display,BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAcion();
panel =new JPanel();
panel.setLayout(new GridLayout(4,4,3,3));
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/",command); addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*",command); addButton("3",insert);
addButton("2",insert);
addButton("1",insert);
addButton("-",command); addButton("0",insert);
addButton(".",insert);
addButton("=",command);
addButton("+",command);
add(panel,BorderLayout.CENTER);
start=true;
} private void addButton(String label, ActionListener listener) {
JButton button=new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener{ public void actionPerformed(ActionEvent e) {
//To change body of implemented methods use File | Settings | File Templates.
String input=e.getActionCommand();
// result=Double.parseDouble(input);
if(start){
display.setText(" ");
start=false;
}
display.setText(display.getText()+input);
}
}
private class CommandAcion implements ActionListener{ public void actionPerformed(ActionEvent ev) {
//To change body of implemented methods use File | Settings | File Templates.
String command=ev.getActionCommand();
if(start){
if(command.equals("-")){display.setText(command);
start=false;}
else display.setText(" ");}
else{
caculator(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
}
public void caculator(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;
display.setText(" "+result);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货