當前位置:編程學習大全網 - 源碼下載 - 求java計算器的程序,具體界面就像下面的圖那樣的,謝謝了!我這有個半成品,就是少了幾個鍵,高手幫幫忙

求java計算器的程序,具體界面就像下面的圖那樣的,謝謝了!我這有個半成品,就是少了幾個鍵,高手幫幫忙

修改的,還沒有美化下

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.text.DecimalFormat;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextArea;

public class Calculator extends JFrame {

private JLabel stuno = new JLabel("學號:29130101016");

private JLabel stuname = new JLabel("姓名:陳昕");

private JPanel inputPanel = new JPanel();

private JPanel operationPanel = new JPanel();

private JTextArea input = new JTextArea(2, 18);

private JButton backspace = new JButton("<-");

private JButton CE = new JButton("CE ");

private JButton C = new JButton("C ");

private JButton sign = new JButton("+/-");

private JButton sqrt = new JButton("SQRT");

private JButton percentage = new JButton("%");

private JButton fraction = new JButton("1/x");

private JButton add = new JButton("+");

private JButton sub = new JButton("-");

private JButton mul = new JButton("*");

private JButton div = new JButton("/");

private JButton decimal = new JButton(".");

private JButton equal = new JButton("=");

private JButton zero = new JButton("0");

private JButton one = new JButton("1");

private JButton two = new JButton("2");

private JButton three = new JButton("3");

private JButton four = new JButton("4");

private JButton five = new JButton("5");

private JButton six = new JButton("6");

private JButton seven = new JButton("7");

private JButton eight = new JButton("8");

private JButton nine = new JButton("9");

private JTextArea blank = new JTextArea(2, 18);

private String num1 = "";

private String operator = "";

public static void main(String[] args) {

new Calculator();

}

public Calculator(){

super("Calculator");

super.setBackground(Color.black);

super.setBounds(300, 300, 300, 320);

JPanel information = new JPanel();

information.setLayout(new GridLayout(1, 2));

information.add(stuno);

information.add(stuname);

super.add(information, BorderLayout.NORTH);

inputPanel.add(input);

input.setBackground(new Color(197, 215, 216));

inputPanel.add(blank);

inputPanel.setBackground(Color.gray);

inputPanel.setLayout(new GridLayout(2, 1));

blank.setEditable(false);

super.add(inputPanel, BorderLayout.CENTER);

operationPanel.add(backspace);

operationPanel.add(CE);

operationPanel.add(C);

operationPanel.add(sign);

operationPanel.add(sqrt);

operationPanel.add(seven);

operationPanel.add(eight);

operationPanel.add(nine);

operationPanel.add(div);

operationPanel.add(percentage);

operationPanel.add(four);

operationPanel.add(five);

operationPanel.add(six);

operationPanel.add(mul);

operationPanel.add(fraction);

operationPanel.add(one);

operationPanel.add(two);

operationPanel.add(three);

operationPanel.add(sub);

operationPanel.add(decimal);

JButton dummyBtn = new JButton(" ");

dummyBtn.setVisible(false);

operationPanel.add(dummyBtn);

operationPanel.add(zero);

dummyBtn = new JButton(" ");

dummyBtn.setVisible(false);

operationPanel.add(dummyBtn);

operationPanel.add(add);

operationPanel.add(equal);

operationPanel.setLayout(new GridLayout(5, 5));

operationPanel.setBackground(Color.gray);

super.add(operationPanel, BorderLayout.SOUTH);

super.setVisible(true);

super.pack();

super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JButton[] operatAry = {backspace, CE, C, decimal, equal, sign, sqrt, percentage, fraction};

OperationMouseListener oepratorMouseListern = new OperationMouseListener();

for(JButton btnItem: operatAry){

btnItem.addMouseListener(oepratorMouseListern);

}

add.addMouseListener(new CalcMouseListener());

sub.addMouseListener(new CalcMouseListener());

mul.addMouseListener(new CalcMouseListener());

div.addMouseListener(new CalcMouseListener());

JButton[] numberBtnAry = {zero, one, two, three, four, five, six, seven, eight, nine};

NumberMouseListener numberMouseListener = new NumberMouseListener();

for(JButton btnItem: numberBtnAry){

btnItem.addMouseListener(numberMouseListener);

}

}

private class NumberMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {

if(input.getText().trim().equals("0")){

input.setText(((JButton)e.getSource()).getText().trim());

}else{

input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

private class CalcMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {

num1 = input.getText().trim();

input.setText("");

operator = ((JButton)e.getSource()).getText().trim();

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

private class OperationMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {

if(e.getSource() == backspace){

String inputText = input.getText();

if(inputText.length() > 0){

input.setText(inputText.substring(0, inputText.length() - 1));

}

}else if(e.getSource() == C){

input.setText("0");

num1 = "";

}else if(e.getSource() == CE){

input.setText("0");

}else if(e.getSource() == decimal){

String text = input.getText().trim();

if(text.indexOf(".") == -1){

input.setText(text.concat("."));

}

}else if(e.getSource() == equal){

if(!operator.trim().equals("")){

if(!input.getText().trim().equals("")){

double result = 0D;

if(operator.equals("+")){

result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());

}else if(operator.equals("-")){

result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());

}else if(operator.equals("*")){

result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());

}else if(operator.equals("/")){

result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());

}

input.setText(new DecimalFormat("0.00").format(result));

}

}

}else if(e.getSource() == sign){

if(input.getText().length() > 0){

if(input.getText().charAt(0) == '-'){

input.setText(input.getText().substring(1));

}else{

input.setText("-".concat(input.getText()));

}

}

}else if(e.getSource() == sqrt){

double value = Double.parseDouble(input.getText());

if(value < 0){

JOptionPane.showMessageDialog(null, "Error! Can't calculate negative number for sqrt operation");

}else{

input.setText(String.valueOf(Math.sqrt(value)));

}

}else if(e.getSource() == percentage){

double value = Double.parseDouble(input.getText());

if(value != 0){

input.setText(String.valueOf(value / 100));

}

}else if(e.getSource() == fraction){

double value = Double.parseDouble(input.getText());

if(value != 0){

input.setText(String.valueOf(1 / value));

}

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

}

  • 上一篇:強化源代碼
  • 下一篇:《森林報》***讀打卡記錄
  • copyright 2024編程學習大全網