java菜鸟求助

本人现正自学java,现在做的一格最基本的计算器,现在想让文本框显示按键内容,可类总是定义不对,请各位大侠帮忙了,最好能贴上简明易懂的完整的计算器的代码,最好是有详细注释的!小弟在此谢各位了
import java.awt.*;
import java.awt.event.*;
public class jisuan implements ActionListener, TextListener
{
public static void main(String argv[])
{
{
new jisuan();
}
public jisuan()
{
Frame f = new Frame("jisuanji");

TextField xianshi=new TextField("0.",20);
Button B1=new Button("1");
B1.setActionCommand("1");
B1.addActionListener(this);
Button B2=new Button("2");
B2.setActionCommand("2");
Button B3=new Button("3");
B3.setActionCommand("3");
Button B4=new Button("4");
B4.setActionCommand("4");
Button B5=new Button("5");
B5.setActionCommand("5");
Button B6=new Button("6");
B6.setActionCommand("6");
Button B7=new Button("7");
B7.setActionCommand("7");
Button B8=new Button("8");
B8.setActionCommand("8");
Button B9=new Button("9");
B9.setActionCommand("9");
Button B10=new Button("0");
B10.setActionCommand("0");
Button B11=new Button(".");
B11.setActionCommand(".");
Button B12=new Button("+");
B12.setActionCommand("+");
Button B13=new Button("-");
B13.setActionCommand("-");
Button B14=new Button("*");
B14.setActionCommand("*");
Button B15=new Button("/");
B15.setActionCommand("/");
Button B16=new Button("CE");
B16.setActionCommand("CE");

f.setLayout(new GridLayout(5,4));
f.add(B1);
f.add(B2);
f.add(B3);
f.add(B4);
f.add(B5);
f.add(B6);
f.add(B7);
f.add(B8);
f.add(B9);
f.add(B10);
f.add(B11);
f.add(B12);
f.add(B13);
f.add(B14);
f.add(B15);
f.add(B16);
f.add(xianshi);
f.pack();
f.setVisible(true);
}
}
public void actionPerformed (ActionEvent e)
{
String str=e.getActionCommand();

}
class xianshi
{
public xianshi(TextEvent e)
{
xianshi.setText(str);
}
}
}

class windowEventHandler extends WindowAdapter
{
public void WindowClosing(WindowEvent e)
{
System.exit(0);
}
}
如果还有别的地方有问题请帮忙指出来
谢谢

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private JTextField operation; // 结果栏
private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符
private JButton[] numbers; // 数字
// 构造者
public Calculator()
{
setTitle("Calculator");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
operation = new JTextField("0");
operation.setEditable(false);
numbers = new JButton[10];
for (int i = 0; i < 10; i++)
numbers[i] = new JButton("" + i);
dot = new JButton(".");
plus = new JButton("+");
minus = new JButton("-");
multi = new JButton("*");
div = new JButton("/");
sqrt = new JButton("√");
equal = new JButton("=");
changePN = new JButton("±");
clear = new JButton("AC");
// 将窗口物体放入窗口
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, sqrt, 4, 2, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, changePN, 5, 2, 1, 1);
addComponent(layout, clear, 5, 3, 1, 1);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton)e.getSource();
if (btn == clear)
{
operation.setText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '?';
}
else if (btn == equal)
{
operate('=');
equaled = true;
}
else if (btn == plus)
{
operate('+');
equaled = false;
}
else if (btn == minus)
{
operate('-');
equaled = false;
}
else if (btn == multi)
{
operate('*');
equaled = false;
}
else if (btn == div)
{
operate('/');
equaled = false;
}
else if (btn == changePN)
{
operate('p');
operate('=');
equaled = true;
}
else if (btn == sqrt)
{
operate('s');
operate('=');
equaled = true;
}
else
{
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i])
{
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(! operated)
operation.setText(operation.getText() + i);
else
{
operation.setText("" + i);
operated = false;
}
}
if (btn == dot && ! dotExist)
{
operation.setText(operation.getText() + ".");
dotExist = true;
}
}
}
// 进行运算的方法
private void operate(char operator)
{
double currentNumber = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
operation.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}
// 快捷使用GridBagLayout的方法
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
{
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 2, 10, 2);
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton)component).addActionListener(this);
getContentPane().add(component);
}
// 主方法初始化并显示窗口
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setSize(290, 400);
calc.setVisible(true);
}
}

如果你想加sin cos tan的话就建它们的按钮 在actionPerformed方法中的if-else语句中加else if (btn == sin){operate('S');operate('=');equaled = true;}然后在operate方法加对应的语句就行了.记忆M+, M-没时间搞 这个应该比较简单容易明白吧.

参考资料:http://zhidao.baidu.com/question/18163673.html?si=3

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-01
import java.awt.*;
import java.awt.event.*;
public class jisuan implements ActionListener, TextListener
{
TextField xianshi=null;
public void textValueChanged(TextEvent e) {
// TODO Auto-generated method stub

}
public static void main(String argv[])
{
{
new jisuan();
}
}
public jisuan()
{
Frame f = new Frame("jisuanji");

xianshi=new TextField("0.",20);
Button B1=new Button("1");
B1.setActionCommand("1");
B1.addActionListener(this);
Button B2=new Button("2");
B2.setActionCommand("2");
B2.addActionListener(this);
Button B3=new Button("3");
B3.setActionCommand("3");
B3.addActionListener(this);
Button B4=new Button("4");
B4.setActionCommand("4");
B4.addActionListener(this);
Button B5=new Button("5");
B5.setActionCommand("5");
B5.addActionListener(this);
Button B6=new Button("6");
B6.setActionCommand("6");
B6.addActionListener(this);
Button B7=new Button("7");
B7.setActionCommand("7");
B7.addActionListener(this);
Button B8=new Button("8");
B8.setActionCommand("8");
B8.addActionListener(this);
Button B9=new Button("9");
B9.setActionCommand("9");
B9.addActionListener(this);
Button B10=new Button("0");
B10.setActionCommand("0");
B10.addActionListener(this);
Button B11=new Button(".");
B11.setActionCommand(".");
B11.addActionListener(this);
Button B12=new Button("+");
B12.setActionCommand("+");
B12.addActionListener(this);
Button B13=new Button("-");
B13.setActionCommand("-");
B13.addActionListener(this);
Button B14=new Button("*");
B14.setActionCommand("*");
B14.addActionListener(this);
Button B15=new Button("/");
B15.setActionCommand("/");
B15.addActionListener(this);
Button B16=new Button("CE");
B16.setActionCommand("CE");
B16.addActionListener(this);

f.setLayout(new GridLayout(5,4));
f.add(B1);
f.add(B2);
f.add(B3);
f.add(B4);
f.add(B5);
f.add(B6);
f.add(B7);
f.add(B8);
f.add(B9);
f.add(B10);
f.add(B11);
f.add(B12);
f.add(B13);
f.add(B14);
f.add(B15);
f.add(B16);
f.add(xianshi);
f.pack();
f.setVisible(true);
}
public void actionPerformed (ActionEvent e)
{
String str=e.getActionCommand();
xianshi(str);
}

public void xianshi(String str)
{
if(str.equals("CE"))
{
xianshi.setText("");
}
else
xianshi.setText(xianshi.getText().trim()+str);
}
}

class windowEventHandler extends WindowAdapter
{
public void WindowClosing(WindowEvent e)
{
System.exit(0);
}
}本回答被提问者采纳
相似回答