
用JAVA学习写了个计算器的小程序有点问题 求高手帮忙解决下问题在哪?
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalculatorPane...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalculatorPanelClass extends JPanel{
private JLabel display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
public CalculatorPanelClass(){
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
display = new JLabel("0",SwingConstants.RIGHT);
display.setForeground(Color.black);
display.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
add(display,BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel = new JPanel();
panel.setLayout(new GridLayout(4,4));
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/",insert);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*",insert);
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("-",insert);
addButton("0",insert);
addButton(".",insert);
addButton("=",insert);
addButton("+",insert);
add(panel,BorderLayout.CENTER);
}
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 event){
String input = event.getActionCommand();
if (start){
display.setText("");
start = false;
}
display.setText(display.getText()+input);
}
}
private class CommandAction implements ActionListener{
public void actionPerformed(ActionEvent evt){
String command = evt.getActionCommand();
if(start){
lastCommand = command;
}
else{
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void calculate(double x){
if(lastCommand.equalsIgnoreCase("+")){
result += x;
}
if(lastCommand.equalsIgnoreCase("-")){
result -= x;
}
if(lastCommand.equalsIgnoreCase("*")){
result *= x;
}
if(lastCommand.equalsIgnoreCase("/")){
result /= x;
}
if(lastCommand.equalsIgnoreCase("=")){
result = x;
}
display.setText("" + result);
}
}
import java.awt.*;
import javax.swing.*;
public class CalculatorFrameClass extends JFrame{//外层窗口类
public CalculatorFrameClass(){
setTitle("Calculator");
Container contentPane = getContentPane();
CalculatorPanelClass panel = new CalculatorPanelClass();
contentPane.add(panel);
setSize(200,200);
setVisible(true);
setResizable(false);
}
}
package 计算器;
import javax.swing.*;
public class TestCalculatorClass {//测试类
public static void main(String[] args){
CalculatorFrameClass frame = new CalculatorFrameClass();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} 展开
import java.awt.event.*;
import javax.swing.*;
public class CalculatorPanelClass extends JPanel{
private JLabel display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
public CalculatorPanelClass(){
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
display = new JLabel("0",SwingConstants.RIGHT);
display.setForeground(Color.black);
display.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
add(display,BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel = new JPanel();
panel.setLayout(new GridLayout(4,4));
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/",insert);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*",insert);
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("-",insert);
addButton("0",insert);
addButton(".",insert);
addButton("=",insert);
addButton("+",insert);
add(panel,BorderLayout.CENTER);
}
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 event){
String input = event.getActionCommand();
if (start){
display.setText("");
start = false;
}
display.setText(display.getText()+input);
}
}
private class CommandAction implements ActionListener{
public void actionPerformed(ActionEvent evt){
String command = evt.getActionCommand();
if(start){
lastCommand = command;
}
else{
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void calculate(double x){
if(lastCommand.equalsIgnoreCase("+")){
result += x;
}
if(lastCommand.equalsIgnoreCase("-")){
result -= x;
}
if(lastCommand.equalsIgnoreCase("*")){
result *= x;
}
if(lastCommand.equalsIgnoreCase("/")){
result /= x;
}
if(lastCommand.equalsIgnoreCase("=")){
result = x;
}
display.setText("" + result);
}
}
import java.awt.*;
import javax.swing.*;
public class CalculatorFrameClass extends JFrame{//外层窗口类
public CalculatorFrameClass(){
setTitle("Calculator");
Container contentPane = getContentPane();
CalculatorPanelClass panel = new CalculatorPanelClass();
contentPane.add(panel);
setSize(200,200);
setVisible(true);
setResizable(false);
}
}
package 计算器;
import javax.swing.*;
public class TestCalculatorClass {//测试类
public static void main(String[] args){
CalculatorFrameClass frame = new CalculatorFrameClass();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} 展开
展开全部
看不懂什么问题,还没有注释。楼主还得继续努力
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是问问题还是考验别人的?怎么没见你的问题呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询