import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Calculator extends JFrame{
private JPanel contentPane; //内容面板
private JTextField textField; //文本框
private static String a = ""; //第一个数
private static String b = ""; //第二个数
private static String c = ""; //第三个数
public static void main(String[] args)
{
Calculator frame=new Calculator();
frame.setVisible(true);
}
public Calculator()
{
addKeyListener(new KeyActionListener());
setFocusable(true);
setTitle("计算器"); //设置窗体的标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体退出时操作
setBounds(800, 400, 250, 200); //设置窗体位置和大小
contentPane=new JPanel(); //创建内容面板
contentPane.setBorder(new EmptyBorder(5,5,5,5)); //设置面板的边框
contentPane.setLayout(new BorderLayout(0,0)); //设置内容面板为边界布局
setContentPane(contentPane); //应用内容面板
JPanel panel1=new JPanel(); //新建面板用于保存文本框
contentPane.add(panel1,BorderLayout.NORTH); //将面板放置在边界布局的北部
textField=new JTextField(); //新建文本框
textField.setHorizontalAlignment(SwingConstants.RIGHT); //文本框中的文本使用右对齐
panel1.add(textField); //将文本框增加到面板中
textField.setColumns(18); //设置文本框的列数是18
JPanel panel2=new JPanel(); //新建面板用于保存按钮
contentPane.add(panel2, BorderLayout.CENTER); //将面板放置在边界布局的中央
panel2.setLayout(new GridLayout(4,4,5,5)); //面板使用网格4X4布局
JButton button01=new JButton("7"); //新建按钮
button01.addActionListener(new buttonActionListener());
button01.addKeyListener(new KeyActionListener());
panel2.add(button01); //应用按钮
JButton button02=new JButton("8"); //新建按钮
button02.addActionListener(new buttonActionListener());
button02.addKeyListener(new KeyActionListener());
panel2.add(button02); //应用按钮
JButton button03=new JButton("9"); //新建按钮
button03.addActionListener(new buttonActionListener());
button03.addKeyListener(new KeyActionListener());
panel2.add(button03); //应用按钮
JButton button04=new JButton("+"); //新建按钮
button04.addActionListener(new buttonActionListener());
button04.addKeyListener(new KeyActionListener());
panel2.add(button04); //应用按钮
JButton button05=new JButton("4"); //新建按钮
button05.addActionListener(new buttonActionListener());
button05.addKeyListener(new KeyActionListener());
panel2.add(button05); //应用按钮
JButton button06=new JButton("5"); //新建按钮
button06.addActionListener(new buttonActionListener());
button06.addKeyListener(new KeyActionListener());
panel2.add(button06); //应用按钮
JButton button07=new JButton("6"); //新建按钮
button07.addActionListener(new buttonActionListener());
button07.addKeyListener(new KeyActionListener());
panel2.add(button07); //应用按钮
JButton button08=new JButton("-"); //新建按钮
button08.addActionListener(new buttonActionListener());
button08.addKeyListener(new KeyActionListener());
panel2.add(button08); //应用按钮
JButton button09=new JButton("3"); //新建按钮
button09.addActionListener(new buttonActionListener());
button09.addKeyListener(new KeyActionListener());
panel2.add(button09); //应用按钮
JButton button10=new JButton("2"); //新建按钮
button10.addActionListener(new buttonActionListener());
button10.addKeyListener(new KeyActionListener());
panel2.add(button10); //应用按钮
JButton button11=new JButton("1"); //新建按钮
button11.addActionListener(new buttonActionListener());
button11.addKeyListener(new KeyActionListener());
panel2.add(button11); //应用按钮
JButton button12=new JButton("*"); //新建按钮
button12.addActionListener(new buttonActionListener());
button12.addKeyListener(new KeyActionListener());
panel2.add(button12); //应用按钮
JButton button13=new JButton("C"); //新建按钮
button13.addActionListener(new buttonActionListener());
button13.addKeyListener(new KeyActionListener());
panel2.add(button13); //应用按钮
JButton button14=new JButton("0"); //新建按钮
button14.addActionListener(new buttonActionListener());
button14.addKeyListener(new KeyActionListener());
panel2.add(button14); //应用按钮
JButton button15=new JButton("="); //新建按钮
button15.addActionListener(new buttonActionListener());
button15.addKeyListener(new KeyActionListener());
panel2.add(button15); //应用按钮
JButton button16=new JButton("/"); //新建按钮
button16.addActionListener(new buttonActionListener());
button16.addKeyListener(new KeyActionListener());
panel2.add(button16); //应用按钮
}
//处理按钮单击事件的匿名内部类
class buttonActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("+")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = e.getActionCommand();
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = e.getActionCommand();
}
}else if(e.getActionCommand().equals("-")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = e.getActionCommand();
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = e.getActionCommand();
}
}else if(e.getActionCommand().equals("*")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = e.getActionCommand();
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = e.getActionCommand();
}
}else if(e.getActionCommand().equals("/")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = e.getActionCommand();
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = e.getActionCommand();
}
}else if(e.getActionCommand().equals("=")){
int x = Integer.valueOf(a);
if(c.equals("+")){
textField.setText(String.valueOf(x+Integer.valueOf(textField.getText())));
}else if(c.equals("-")){
textField.setText(String.valueOf(x-Integer.valueOf(textField.getText())));
}else if(c.equals("*")){
textField.setText(String.valueOf(x*Integer.valueOf(textField.getText())));
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
textField.setText(String.valueOf(x/Integer.valueOf(textField.getText())));
}
}else if(e.getActionCommand().equals("C")){
textField.setText("");
a = "";
b = "";
c = "";
}else{
textField.setText("");
textField.setText(textField.getText()+e.getActionCommand());
}
}
}
class KeyActionListener implements KeyListener{
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
String y = KeyEvent.getKeyText(e.getKeyCode());
if(y.equals("NumPad +")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = "+";
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = "+";
}
}else if(y.equals("NumPad -")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = "-";
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = "-";
}
}else if(y.equals("NumPad *")){
if(a.equals("")){
a = "0";
a = textField.getText();
c = "*";
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = "*";
}
}else if(y.equals("NumPad /")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
if(a.equals("")){
a = "0";
a = textField.getText();
c = "/";
}else{
if(c.equals("+")){
int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("-")){
int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("*")){
int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
textField.setText(String.valueOf(z));
a = String.valueOf(z);
}
c = "/";
}
}else if(y.equals("Enter")){
int x = Integer.valueOf(a);
if(c.equals("+")){
textField.setText(String.valueOf(x+Integer.valueOf(textField.getText())));
}else if(c.equals("-")){
textField.setText(String.valueOf(x-Integer.valueOf(textField.getText())));
}else if(c.equals("*")){
textField.setText(String.valueOf(x*Integer.valueOf(textField.getText())));
}else if(c.equals("/")){
if(Integer.valueOf(textField.getText()) == 0){
textField.setText("除数不能为0");
}
textField.setText(String.valueOf(x/Integer.valueOf(textField.getText())));
}
}else if(y.equals("Esc")){
textField.setText("");
a = "";
b = "";
c = "";
}else{
textField.setText("");
y = y.replaceAll("NumPad-","");
textField.setText(textField.getText()+y);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
}
java Swing 实现简单计算器代码
最新推荐文章于 2024-08-11 13:01:30 发布