克兰机械密封:[求助]JAVA中很菜的问题~~~在线等

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 14:16:58
这是一个计算器的代码~~~~谁能帮我把其中计算器的代码提出来,
使其中的计算器能单独运行~~~

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 javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PopupCalculatorApplet extends JApplet implements ActionListener {
public void init() {
Button calcButton = new Button("Calculator");
calcButton.addActionListener(this);
Container contentPane = getContentPane();
contentPane.add(calcButton);
}

public void actionPerformed(ActionEvent evt) {
if (calc.isVisible())
calc.setVisible(false);
else
calc.show();
}

private JFrame calc = new CalculatorFrame();
}

class CalculatorPanel extends JPanel implements ActionListener {
public CalculatorPanel() {
setLayout(new BorderLayout());

display = new JTextField("0");
display.setEditable(false);
add(display, "North");

JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4));
String buttons = "789/456*123-0.=+";
for (int i = 0; i < buttons.length(); i++)
addButton(p, buttons.substring(i, i + 1));
add(p, "Center");
}

private void addButton(Container c, String s) {
JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent evt) {
String s = evt.getActionCommand();
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {
if (start)
display.setText(s);
else
display.setText(display.getText() + s);
start = false;
} else {
if (start) {
if (s.equals("-")) {
display.setText(s);
start = false;
} else
op = s;
} else {
calculate(Double.parseDouble(display.getText()));
op = s;
start = true;
}
}
}

public void calculate(double n) {
if (op.equals("+"))
arg += n;
else if (op.equals("-"))
arg -= n;
else if (op.equals("*"))
arg *= n;
else if (op.equals("/"))
arg /= n;
else if (op.equals("="))
arg = n;
display.setText("" + arg);
}

private JTextField display;

private double arg = 0;

private String op = "=";

private boolean start = true;
}

class CalculatorFrame extends JFrame {
public CalculatorFrame() {
setTitle("Calculator");
setSize(200, 200);

Container contentPane = getContentPane();
contentPane.add(new CalculatorPanel());
}
}

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 javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

class PopupCalculatorApplet extends JApplet implements ActionListener
{
public void init()
{
Button calcButton = new Button("Calculator");
calcButton.addActionListener(this);
Container contentPane = getContentPane();
contentPane.add(calcButton);

}

public void actionPerformed(ActionEvent evt)
{
if (calc.isVisible())
calc.setVisible(false);
else
calc.show();
}

private JFrame calc = new CalculatorFrame();
}

class CalculatorPanel extends JPanel implements ActionListener
{
public CalculatorPanel()
{
setLayout(new BorderLayout());

display = new JTextField("0");
display.setEditable(false);
add(display, "North");

JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4));
String buttons = "789/456*123-0.=+";
for (int i = 0; i < buttons.length(); i++)
addButton(p, buttons.substring(i, i + 1));
add(p, "Center");
}

private void addButton(Container c, String s)
{
JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent evt)
{
String s = evt.getActionCommand();
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {
if (start)
display.setText(s);
else
display.setText(display.getText() + s);
start = false;
}
else
{
if (start)
{
if (s.equals("-"))
{
display.setText(s);
start = false;
} else
op = s;
}
else
{
calculate(Double.parseDouble(display.getText()));
op = s;
start = true;
}
}
}

public void calculate(double n)
{
if (op.equals("+"))
arg += n;
else if (op.equals("-"))
arg -= n;
else if (op.equals("*"))
arg *= n;
else if (op.equals("/"))
arg /= n;
else if (op.equals("="))
arg = n;
display.setText("" + arg);
}

private JTextField display;

private double arg = 0;

private String op = "=";

private boolean start = true;
}

class CalculatorFrame extends JFrame
{
public CalculatorFrame()
{
setTitle("Calculator");
setSize(200, 200);
Container contentPane = getContentPane();
contentPane.add(new CalculatorPanel());
}
}
public class test
{
public static void main(String [] args)
{
CalculatorFrame cp=new CalculatorFrame();
cp.setSize(300,300);
cp.setVisible(true);
}
}
加个main方法把窗口显示出来就OK了