最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java圖形界面之加法計(jì)算器

 更新時(shí)間:2022年04月26日 18:18:54   作者:「已注銷」  
這篇文章主要為大家詳細(xì)介紹了java圖形界面之加法計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

JAVA用于開發(fā)圖形界面應(yīng)用的 SWING 組件包功能強(qiáng)大,使用方便。接下來我們就使用其寫一個(gè)簡(jiǎn)單的圖形界面小程序:加法計(jì)算器。

第一步:

首先得構(gòu)思,我們要做什么。加法計(jì)算器的話,做出來之后大概是這個(gè)樣子的。

如上圖所示,這個(gè)程序的界面在我們腦海中已經(jīng)成型了:程序頂部有一個(gè)標(biāo)題,這里用來交代我們程序的名字;功能上用戶可以在方框 1 和方框 2 中放入想要進(jìn)行相加的數(shù)值,然后我們點(diǎn)擊下方的 “計(jì)算” 按鈕,結(jié)果就會(huì)顯示在方框 3 中。

第二步:

分析界面,我們?cè)撛趺醋?。從上圖可以看出,界面中包含 7 個(gè)控件 : 標(biāo)題,方框 1 ,方框 2 ,方框 3,加號(hào),等于號(hào),還有一個(gè) “計(jì)算” 按鈕。
此時(shí)我們腦海中應(yīng)該已經(jīng)有了相應(yīng)的對(duì)策 :
方框 1 , 方框 2 用來接收用戶動(dòng)態(tài)輸入的值,方框 3 用來顯示計(jì)算的結(jié)果;我們可以使用三個(gè)文本框來完成,其中方框 3 并不需要用戶輸入,我們可以給其設(shè)置用戶不可編輯屬性。
標(biāo)題,加號(hào)和等于號(hào),這三個(gè)控件始終不變,我們選擇靜態(tài)的標(biāo)簽來完成。
“計(jì)算” 按鈕,當(dāng)然得用按鈕控件來完成,但是如果只是一個(gè)平平無奇的按鈕,那可就沒有用了,我們需要為這個(gè)按鈕添加一個(gè)計(jì)算加法的事件響應(yīng),以便我們?cè)趩螕暨@個(gè)按鈕時(shí),計(jì)算結(jié)果會(huì)出現(xiàn)在方框 3 中。

控件的使用選擇好了。我們還需要分析分析,想要實(shí)現(xiàn)如上圖所示的界面,我們需要幾個(gè)模塊。

兩個(gè)模塊:

1)標(biāo)題 為一個(gè)模塊。
2)方框 1, 方框 2,方框 3,加號(hào),等于號(hào)為一個(gè)模塊。

這是因?yàn)?方框 1, 方框 2,方框 3,加號(hào),等于號(hào) 處于同一水平線上,而 標(biāo)題 處于另一個(gè)水平線上。所以我們需要將其分為兩個(gè)模塊。(也許會(huì)感覺有點(diǎn)多此一舉,但程序設(shè)計(jì)就是這樣,死板且靈活,方法是固定的,但卻可以實(shí)現(xiàn)各種各樣的效果)。
在分為兩個(gè)水平模塊后,事情還沒有結(jié)束,我們還需要將這兩個(gè)水品模塊組合為一個(gè)垂直模塊(從上到下排列)。
按鈕我們待會(huì)兒隨意設(shè)置其位置,這里就不將其作為一個(gè)模塊了。

這樣,準(zhǔn)備工作算是完成了。著手寫代碼吧。

代碼實(shí)現(xiàn):

import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class MyWin extends JFrame implements ActionListener{
?? ?JTextField rValue = new JTextField(8);
?? ?JTextField lValue = new JTextField(8);
?? ?JTextField result = new JTextField(8);
?? ?JButton calcul = new JButton("計(jì)算");
?? ?
?? ?MyWin() {
?? ??? ?/**布局設(shè)計(jì)**/
?? ??? ?setTitle("加法計(jì)算器");
?? ??? ?setLayout(null);
?? ??? ?setBounds(680, 300, 512, 380);
?? ??? ?setVisible(true);
?? ??? ?setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? ??? ?
?? ??? ?JPanel myTitle = new JPanel();
?? ??? ?myTitle.add(new JLabel("加法計(jì)算器 - v1.0"));
?? ??? ?JPanel myText = new JPanel();
?? ??? ?myText.add(rValue);
?? ??? ?myText.add(new JLabel(" + "));
?? ??? ?myText.add(lValue);
?? ??? ?myText.add(new JLabel(" = "));
?? ??? ?result.setEditable(false);
?? ??? ?result.setBackground(Color.LIGHT_GRAY);
?? ??? ?myText.add(result);
?? ??? ?
?? ??? ?Box myMain = Box.createVerticalBox();
?? ??? ?Component strut1 = Box.createVerticalStrut(20);
?? ??? ?Component strut2 = Box.createVerticalStrut(200);
?? ??? ?myMain.add(strut1);
?? ??? ?myMain.add(myTitle);
?? ??? ?myMain.add(myText);
?? ??? ?myMain.add(strut2);
?? ??? ?myMain.setBounds(0, 0, 512, 380);
?? ??? ?add(myMain);
?? ??? ?
?? ??? ?calcul.setBounds(200, 220, 100, 60);
?? ??? ?add(calcul);
?? ??? ?
?? ??? ?/**事件監(jiān)聽**/
?? ??? ?calcul.addActionListener(new ActionListener() {

?? ??? ??? ?@Override
?? ??? ??? ?public void actionPerformed(ActionEvent e) {
?? ??? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ??? ?
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?int rVal = Integer.valueOf(rValue.getText());
?? ??? ??? ??? ??? ?int lVal = Integer.valueOf(lValue.getText());
?? ??? ??? ??? ??? ?int res = rVal + lVal;
?? ??? ??? ??? ??? ?result.setText(String.valueOf(res));
?? ??? ??? ??? ?} catch (Exception e1) {
?? ??? ??? ??? ??? ?System.out.println(e1);
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?});
?? ?}

?? ?@Override
?? ?public void actionPerformed(ActionEvent e) {
?? ??? ?// TODO Auto-generated method stub

?? ?}
}

上述代碼中:

1 ~ 5 行,導(dǎo)入了需要使用到的包。

想要實(shí)現(xiàn)窗口界面,首先我們需要一個(gè)窗口。

7 ~ 70 行,定義了一個(gè)窗口類并在其構(gòu)造函數(shù)中具體實(shí)現(xiàn)了控件的初始化。該窗口類繼承自 JAVA 提供的JFrame 窗口類,并實(shí)現(xiàn)了JAVA 提供的 ActionListener 事件響應(yīng)接口(我們使用該窗口類作為自己的事件監(jiān)聽器)。

8 ~ 11 行,將文本框與按鈕控件作為類的成員屬性,因?yàn)樵诔绦蜻\(yùn)行時(shí)他們的狀態(tài)需要保存下來,如果將其定義在某個(gè)函數(shù)中,該函數(shù)結(jié)束時(shí),控件的生命周期也會(huì)結(jié)束,控件的狀態(tài)已經(jīng)其中的值無法保存,我們便無法完成后序的其他操作。其中 8,9,10 行文本框控件使用有參構(gòu)造定義,表示該文本框控件最大可顯示 8 位字符。

13 ~ 63 行,實(shí)現(xiàn)窗口類的構(gòu)造函數(shù)。

15 行,設(shè)置窗口標(biāo)題。

16 行,設(shè)置窗口布局為 null 布局,即我們需要設(shè)置每一個(gè)控件的位置。

17 行,設(shè)置窗口程序運(yùn)行時(shí)出現(xiàn)在屏幕上時(shí)的初始位置和窗口大小。

18 行,設(shè)置窗口可見。若設(shè)置為 false ,則窗口不可見(你什么也看不到)。

19 行,設(shè)置點(diǎn)擊窗口右上角叉叉時(shí)程序的事件響應(yīng)。我這里設(shè)置為 EXIT_ON_CLOSE ,即點(diǎn)擊后退出程序。

21 行,定義一個(gè) myTitle 面板(即為上文中第一個(gè)模塊),用來存放我們的標(biāo)題。
22 行,往 mytitle 面板中增加了我們的標(biāo)題文本標(biāo)簽。

23 ~ 30,定義 myText 面板(第二個(gè)模塊)并往其中添加了類成員屬性中的三個(gè)文本框控件。其中 28 行設(shè)置接受結(jié)果的文本框的屬性為不可編輯,29 行設(shè)置其顏色為亮灰色。

32 ~ 39 行,我們將上面定義的兩個(gè)面板(兩個(gè)模塊)放入了一個(gè)垂直盒子中(將兩個(gè)模塊組合)。
其中 33,34 行我設(shè)置了兩個(gè)支撐體,用來控制兩個(gè)模塊之間的距離。

40 行,將裝有兩個(gè)面板的盒子添加到當(dāng)前窗口。

42 行,設(shè)置 “計(jì)算” 按鈕出現(xiàn)在窗口中的位置和按鈕的大小。
43 行,將按鈕添加到當(dāng)前窗口。

46 ~ 62 行,為 “計(jì)算” 按鈕注冊(cè)監(jiān)聽器并實(shí)現(xiàn)事件響應(yīng)函數(shù)(將兩個(gè)文本框內(nèi)的字符串轉(zhuǎn)化為整形數(shù)據(jù)進(jìn)行加法計(jì)算后,將結(jié)果輸出在接收結(jié)果的文本框中)。

在相同包下的 Test 文件中測(cè)試一下程序。

public class Test {

?? ?public static void main(String[] args) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?MyWin a = new MyWin();
?? ?}

}

運(yùn)行效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java設(shè)計(jì)模式之工廠方法和抽象工廠

    Java設(shè)計(jì)模式之工廠方法和抽象工廠

    本文詳細(xì)講解了Java設(shè)計(jì)模式之工廠方法和抽象工廠,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener)

    SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener)

    這篇文章主要介紹了SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    SpringBoot實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何通過SpringBoot實(shí)現(xiàn)抽獎(jiǎng)算法,文中的示例代碼簡(jiǎn)潔易懂,具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • Java集合Map常見問題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java集合Map常見問題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)整理了Java集合Map常見問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • struts2通過action返回json對(duì)象

    struts2通過action返回json對(duì)象

    struts2通過action返回json對(duì)象其實(shí)很簡(jiǎn)單的,首先我們需要引入jar包,然后在寫一個(gè)簡(jiǎn)單的action就好了,接下來通過本文給大家介紹struts2通過action返回json對(duì)象的方法,感興趣的朋友一起看看吧
    2016-09-09
  • Java開啟JMX遠(yuǎn)程監(jiān)控服務(wù)配置

    Java開啟JMX遠(yuǎn)程監(jiān)控服務(wù)配置

    這篇文章主要為大家介紹了Java開啟JMX遠(yuǎn)程監(jiān)控的服務(wù)配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 使用bitset實(shí)現(xiàn)毫秒級(jí)查詢(實(shí)例講解)

    使用bitset實(shí)現(xiàn)毫秒級(jí)查詢(實(shí)例講解)

    下面小編就為大家?guī)硪黄褂胋itset實(shí)現(xiàn)毫秒級(jí)查詢(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • java并發(fā)包JUC誕生及詳細(xì)內(nèi)容

    java并發(fā)包JUC誕生及詳細(xì)內(nèi)容

    這篇文章主要為大家介紹了java并發(fā)包JUC的誕生及JUC增加的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • java實(shí)現(xiàn)的正則工具類

    java實(shí)現(xiàn)的正則工具類

    這篇文章主要介紹了java實(shí)現(xiàn)的正則工具類,可用于針對(duì)電話號(hào)碼、郵箱、QQ號(hào)碼、QQ密碼、手機(jī)號(hào)的正則驗(yàn)證功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Maven項(xiàng)目讀取resources文件路徑問題解決方案

    Maven項(xiàng)目讀取resources文件路徑問題解決方案

    這篇文章主要介紹了Maven項(xiàng)目讀取resources文件路徑問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

礼泉县| 邹城市| 嘉义市| 台南市| 峨山| 潜江市| 天柱县| 易门县| 红原县| 寿宁县| 阜新市| 池州市| 南召县| 嘉兴市| 宿松县| 平乡县| 丰宁| 墨玉县| 安宁市| 神农架林区| 静海县| 松阳县| 陵川县| 丹棱县| 中牟县| 鸡泽县| 屯门区| 安丘市| 台东县| 林甸县| 白银市| 寿宁县| 诏安县| 且末县| 拜泉县| 马山县| 凉山| 长泰县| 黎平县| 永平县| 隆尧县|