java swing 计算器

简易计算器(可用)

package com.wt010.enjoy;  
  
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.event.KeyAdapter;  
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;  
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;  
import javax.swing.JTextField;  
  
public class Calculator extends JFrame {  
      
    public static void main(String[] args) {  
        // Create application frame.  
        Calculator frame = new Calculator();  
          
        frame.setTitle("Calculator");  
        frame.setSize(240, 320);  
        frame.setResizable(false);  
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);  
        frame.setLocationRelativeTo(null);
          
        frame.init();
        
        //更改默认java图标
        Toolkit tk= Toolkit.getDefaultToolkit();
        Image image=tk.createImage("images/b.jpg");
        frame.setIconImage(image);
        // Show frame  
        frame.setVisible(true);  
        
        
    }  
      
    private void init()   
    {  
        textField = new JTextField();     
        textField.setEditable(false);  
        textField.setHorizontalAlignment (JTextField.RIGHT);  
        JPanel panel = new JPanel();  
        panel.setLayout(new GridLayout(4, 4));  
        
        ImageIcon img =new ImageIcon("images/a.jpg");
       
        JLabel label=new JLabel("sdfsdf"); 
        label.setIcon(img);
        textField.setBackground(Color.blue);
        textField.setFont(new Font("黑体",Font.BOLD,19));
        textField.setForeground(Color.WHITE);
        Container container = getContentPane();  
        container.add(textField, BorderLayout.NORTH);  
        //container.add(label, BorderLayout.NORTH);
        container.add(panel, BorderLayout.CENTER);  
          
        panel.add(useButton('7'));  
        panel.add(useButton('8'));  
        panel.add(useButton('9'));  
        panel.add(useButton('+'));  
        panel.add(useButton('4'));  
        panel.add(useButton('5'));  
        panel.add(useButton('6'));  
        panel.add(useButton('-'));  
        panel.add(useButton('1'));  
        panel.add(useButton('2'));  
        panel.add(useButton('3'));  
        panel.add(useButton('*'));  
        panel.add(useButton('0'));  
        panel.add(useButton('.'));  
        panel.add(useButton('='));  
        panel.add(useButton('/'));  
    }  
      
    public JButton useButton (final char key)   
    {  
        JButton button = new JButton(String.valueOf(key));  
          
        button.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent event)  
            {  
                JButton btn = (JButton) event.getSource();  
                char key2 = btn.getText().charAt(0);  
                  
                action(key2);  
            }  
        });  
        button.addKeyListener(new KeyAdapter()  
        {  
            public void keyReleased(KeyEvent event)  
            {  
                char key2 = event.getKeyChar ();  
                  
                //if(key2 != key)  
                  //  return;  
                  
                action(key2);  
            }  
        });  
          
        return button;  
    }  
      
    private void action(char key2)  
    {  
        if(reop)  
        {  
            textField.setText("");  
            reop = false;  
        }  
          
        switch(key2)  
        {  
            case '+':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '+';  
                break;  
            case '-':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '-';  
                break;  
            case '*':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '*';  
                break;  
            case '/':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '/';  
                break;  
            case '=':  
                reop = true;  
                v2 = Double.parseDouble(textField.getText());  
                switch(operator)  
                {  
                    case '+':  
                        value = v1 + v2;  
                        break;  
                    case '-':  
                        value = v1 - v2;  
                        break;  
                    case '*':  
                        value = v1 * v2;  
                        break;  
                    case '/':  
                        value = v1 / v2;  
                        break;  
                    default: ;  
                }  
                textField.setText(String.valueOf(value));  
                break;  
            case '1':  
            case '2':  
            case '3':  
            case '4':  
            case '5':  
            case '6':  
            case '7':  
            case '8':  
            case '9':  
            case '0':  
            case '.':  
                String text = textField.getText() + key2;  
                textField.setText(text);  
                break;  
            default: ;  
        }  
    }  
    private JTextField textField;  
    private double v1, v2, value;  
    private char operator;  
    private boolean reop = false;  
}  

 

posted on 2018-01-16 17:45  细思极恐的大橙子  阅读(280)  评论(0编辑  收藏  举报

导航