天天看點

用java編寫一個電腦

    今天學了GUI,自己寫了一個電腦。基本功能都實作了。不過還有很多缺陷,我用的方法也不好,全部代碼都寫在了同一個方法中了。還寫的很啰嗦。發個部落格紀念一下今天下午的成果。和大家分享一下成果,代碼後面還會繼續改進。

代碼如下:

package com.jisuanqi;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class JSQ extends JFrame {

public static void main(String[] args) {

new JSQ();

}

public JSQ() {

setTitle("電腦"); // 标題名稱

setSize(240, 350); // 視窗大小

setLocationRelativeTo(null);// 視窗居中

setLayout(new BorderLayout()); // 布局方式

final JTextField lblxian = new JTextField(); // 文本輸入框

lblxian.setFont(new Font("宋體", Font.PLAIN, 50)); // 設定字型

lblxian.setPreferredSize(new Dimension(230, 70)); // 設定顯示器的大小

JPanel panelxian = new JPanel(); // 容器

panelxian.add(lblxian);

add(panelxian, BorderLayout.NORTH); // 加到視窗上

JPanel panelS = new JPanel();

add(panelS, BorderLayout.SOUTH);

panelS.setLayout(new GridLayout(5, 4)); // 設定布局方式

JButton btnAC = new JButton("AC"); // 清空數字的按鈕

// 監聽器

btnAC.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(""); // 設定數字為空,清空數字

}

});

panelS.add(btnAC);

add(panelS);

JButton btnZhengFu = new JButton("+/-");

panelS.add(btnZhengFu);

add(panelS);

JButton btnBai = new JButton("%"); // 百分号按鈕

// 監聽器

btnBai.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

double num = Double.parseDouble(lblxian.getText());

lblxian.setText("" + (num / 100));

}

});

panelS.add(btnBai);

add(panelS);

JButton btnChu = new JButton("/"); // 除号按鈕

// 監聽器

btnChu.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (lblxian.getText().indexOf("/") > 0) { // 判斷是否有除号,有的話不能再輸入除号

} else {

lblxian.setText(lblxian.getText() + "/");

}

}

});

btnChu.setBackground(Color.orange);

panelS.add(btnChu);

add(panelS);

JButton btn7 = new JButton("7"); // 數字7按鈕

btn7.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 7);

}

});

panelS.add(btn7);

add(panelS);

JButton btn8 = new JButton("8");// 數組8的按鈕

btn8.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 8);

}

});

panelS.add(btn8);

add(panelS);

JButton btn9 = new JButton("9");// 數字9的按鈕

btn9.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 9);

}

});

panelS.add(btn9);

add(panelS);

JButton btnCheng = new JButton("X");// 乘号的按鈕

btnCheng.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { // 判斷是否有乘号,有的話,不能再輸入乘号

if (lblxian.getText().indexOf("*") > 0) {

} else {

lblxian.setText(lblxian.getText() + "*");

}

}

});

btnCheng.setBackground(Color.orange);

panelS.add(btnCheng);

add(panelS);

JButton btn4 = new JButton("4"); // 數字4的按鈕

btn4.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 4);

}

});

panelS.add(btn4);

add(panelS);

JButton btn5 = new JButton("5");// 數字5的按鈕

btn5.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 5);

}

});

panelS.add(btn5);

add(panelS);

JButton btn6 = new JButton("6");// 數字6的按鈕

btn6.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 6);

}

});

panelS.add(btn6);

add(panelS);

JButton btnJian = new JButton("-");// 減号的按鈕

btnJian.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (lblxian.getText().indexOf("-") > 0) { // 判斷是否有減号,有的話不用再輸入減号

} else {

lblxian.setText(lblxian.getText() + "-");

}

}

});

btnJian.setBackground(Color.orange);

panelS.add(btnJian);

add(panelS);

JButton btn1 = new JButton("1");// 數字1的按鈕

btn1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 1);

}

});

panelS.add(btn1);

add(panelS);

JButton btn2 = new JButton("2");// 數字2的按鈕

btn2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 2);

}

});

panelS.add(btn2);

add(panelS);

JButton btn3 = new JButton("3");// 數字3的按鈕

btn3.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 3);

}

});

panelS.add(btn3);

add(panelS);

JButton btnJia = new JButton("+");// 加号的按鈕

btnJia.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (lblxian.getText().indexOf("+") > 0) { // 判斷是否有加号,有的話不能再輸入加号

} else {

lblxian.setText(lblxian.getText() + "+");

}

}

});

btnJia.setBackground(Color.orange);

panelS.add(btnJia);

add(panelS);

JButton btn0 = new JButton("0");// 數字0的按鈕

btn0.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + 0);

}

});

panelS.add(btn0);

add(panelS);

JButton btnTui = new JButton("←");// 倒退的按鈕

btnTui.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String c = lblxian.getText();

String num = c.substring(0, c.length() - 1); // 截圖輸入框中字元從0到倒數第二個的字元

lblxian.setText(num);

}

});

panelS.add(btnTui);

add(panelS);

JButton btnDian = new JButton(".");// 小數點的按鈕

btnDian.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

lblxian.setText(lblxian.getText() + ".");

}

});

panelS.add(btnDian);

add(panelS);

JButton btnDeng = new JButton("=");// 等号的按鈕

btnDeng.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String content = lblxian.getText(); // 擷取文本框的數

int i = content.indexOf("+"); // 搜尋加号的位置

if (i > 0) {

// 加法

String num1 = content.substring(0, i); // 截取加号前的數字

String num2 = content.substring(i + 1, content.length());// 截取加号以後的數字

try {

double fNum = Double.parseDouble(num1);// 強行轉化為double的資料類型

double sNum = Double.parseDouble(num2);// 強行轉化為double的資料類型

double sum = fNum + sNum; // 兩數相加

lblxian.setText("" + sum);// 輸出到文本框

} catch (Exception e2) {

}

}

String content1 = lblxian.getText();// 擷取文本框數字

int j = content1.indexOf("-"); // 搜尋減号的位置

if (j > 0) {

// 減法

String num1 = content1.substring(0, j); // 截取減号前的數字

String num2 = content1.substring(j + 1, content1.length()); // 截取減号後的數字

try {

double fNum = Double.parseDouble(num1);// 強行轉化為double的資料類型

double sNum = Double.parseDouble(num2);// 強行轉化為double的資料類型

double jian = fNum - sNum; // 兩數相減

lblxian.setText("" + jian); // 設定文本框

} catch (Exception e2) {

}

}

String content2 = lblxian.getText();// 擷取文本框數字

int k = content2.indexOf("*"); // 搜尋乘号的位置

if (k > 0) {

// 乘法

String num1 = content2.substring(0, k); // 截取乘号前的數字

String num2 = content2.substring(k + 1, content2.length());// 截取乘号後面的數字

try {

double fNum = Double.parseDouble(num1);// 強行轉化為double的資料類型

double sNum = Double.parseDouble(num2);// 強行轉化為double的資料類型

double cheng = fNum * sNum;// 兩數相乘

lblxian.setText("" + cheng); // 設定文本框

} catch (Exception e2) {

}

}

String content3 = lblxian.getText();// 擷取文本框的内容

int l = content3.indexOf("/"); // 搜尋除号的位置

if (l > 0) {

// 除法

String num1 = content3.substring(0, l);// 截取除号前的數字

String num2 = content3.substring(l + 1, content3.length());// 截取除号後的數字

try {

double fNum = Double.parseDouble(num1);// 強行轉化為double的資料類型

double sNum = Double.parseDouble(num2);// 強行轉化為double的資料類型

double chu = fNum / sNum;// 兩數相除

lblxian.setText("" + chu);// 設定文本框内容

} catch (Exception e2) {

}

}

}

});

btnDeng.setBackground(Color.orange);

panelS.add(btnDeng);

add(panelS);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 關閉視窗

setVisible(true);// 顯示視窗

}

}