91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java實現簡單計算器

發布時間:2020-06-22 01:35:08 來源:網絡 閱讀:190 作者:2578612215 欄目:編程語言

1.概述

之前作者寫過一篇文章,也是關于計算器的,用的是C++與Qt,鏈接在這里

這次用java的swing寫的(這差距好像有點大,好吧是qt太強了).

先上圖:

java實現簡單計算器cdn.xitu.io/2019/12/10/16eebf9aedf7a630">

2.UI

總體布局使用流布局.

(1)文本框

文本框就一個JPanel里面加一個JTextField.

boxField.setLayout(new FlowLayout());
box.setPreferredSize(new Dimension(300, 25));
boxField.add(box);

JTextField設置尺寸需要使用setPreferredSize()而不是setSize().

(2)按鍵

按鍵4*4網格布局,逐個添加button即可.

buttonsField.setLayout(new GridLayout(4, 4, 20, 20));
buttonsField.setPreferredSize(new Dimension(300, 300));
buttonsField.add(xxx);
//add....

3.鼠標事件

鼠標事件針對button,仔細想一想,單擊一個button,然后文本框里面就會有相應的反應,據此添加事件監聽.

num0.addActionListener(v -> {
    box.setText(box.getText() + "0");
    mainFrame.requestFocus();
});

requestFocus()這一行把焦點還給JFrame,因為鼠標點擊button后,button會獲取焦點,會影響后面的鍵盤監聽.

4.鍵盤事件

鍵盤事件與鼠標事件類似,針對每個鍵判斷即可.

在這里的是把KeyListener注冊到JFrame上面,直接在里面重寫以下三個KeyListener的方法:

public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
public void keyTyped(KeyEvent e);

基本上就是通過

if (e.getKeyCode() == KeyEvent.VK_xxxx)

來判斷各個鍵,唯一要注意一下的是+與*

因為作者使用的鍵盤沒有小鍵盤(尷尬....),+與*需要shift+=或8,嘗試過直接

if (e.getKeyCode() == KeyEvent.VK_PLUS)
if (e.getKeyCode() == KeyEvent.VK_ADD)
if (e.getKeyCode() == KeyEvent.VK_MUTIPLY)

無效.

因此需要在KeyPressed這里判斷是否按下了shift,然后到了KeyReleased()的時候,特判一下8與=:

else if (e.getKeyCode() == KeyEvent.VK_8)
    box.setText(box.getText() + (shift ? "*" : "8"));
else if(e.getKeyCode() == KeyEvent.VK_EQUALS)
{
    if(shift)
        box.setText(box.getText() + "+");
    else
        setResult();
}

5.計算表達式

計算表達式部分這里講了就不詳細說了,代碼在后面.

簡單來說就是先使用

GetResult.setExpression();

這個靜態方法設置表達式,然后通過

GetResult.valid()

判斷是否合法,合法的話通過

GetResult.result()

獲取String結果.

6.測試

java實現簡單計算器

java實現簡單計算器

7.源碼

github

碼云

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻甸| 康保县| 偃师市| 湘潭市| 英吉沙县| 舟曲县| 千阳县| 芮城县| 沙雅县| 宜章县| 军事| 邹城市| 平塘县| 阿拉善右旗| 全椒县| 若羌县| 平山县| 淳安县| 东乡县| 封开县| 仁化县| 旺苍县| 田东县| 来凤县| 镇平县| 金门县| 新余市| 大连市| 麻栗坡县| 溆浦县| 清丰县| 宿松县| 台中县| 新丰县| 浑源县| 江孜县| 兴国县| 班玛县| 烟台市| 霸州市| 彭山县|