java實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器界面
如何用java寫一個(gè)簡(jiǎn)易的計(jì)算器界面,供大家參考,具體內(nèi)容如下
前言(與本節(jié)重點(diǎn)無關(guān)可以忽視)
最近了解了一些界面窗口知識(shí),在老師一步步的悉心教導(dǎo)下我卻又一次地走向了迷茫——陌生,理解不充分,照搬??瓤?,但是經(jīng)過幾天的拆解,琢磨,實(shí)踐,我也漸漸粗淺地認(rèn)識(shí)到了一些本質(zhì)問題。當(dāng)時(shí)教寫的是登錄界面,所以這次我打算寫一個(gè)計(jì)算器界面來檢測(cè)一下自己是不是依然一頭霧水。
基本準(zhǔn)備
首先給類取名CaculatorInterface(計(jì)算器界面)
package kallen1014; public class CalculatorInterface { }
第二步,想好需要引入的包,框架JFrame,按鍵JButton,輸入框JTextFiled,其尺寸Dimension,然后是排版FlowLayout,還有按鍵的顏色(實(shí)際上不要也罷,但在這里還是體現(xiàn)一下這個(gè)功能吧)
package kallen1014; import java.awt.FlowLayout; import java.awt.Dimension; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JButton; public class CalculatorInterface { }
調(diào)用主函數(shù)創(chuàng)建對(duì)象,并令其實(shí)現(xiàn)方法
public static void main(String[]args) { ?? ?CalculatorInterface ci=new CalculatorInterface(); ?? ?ci.init(); ?? ?}
在方法“init”中編些界面的主要內(nèi)容
創(chuàng)建框架,包括其格式,標(biāo)題,顯示位置等等
public void init() { ?? ??? ?JFrame jf=new JFrame(); ?? ??? ?jf.setTitle("計(jì)算器"); ?? ??? ?jf.setSize(500, 400); ?? ??? ?jf.setResizable(true);//因?yàn)椴恢佬枰啻筮@里的大小設(shè)置為可調(diào)式 ?? ??? ?jf.setLocation(null);//程序彈出的位置設(shè)置在屏幕中間 ?? ??? ?jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//不設(shè)置這個(gè)程序?qū)o法關(guān)閉
設(shè)置布局規(guī)則
這一步很重要,決定了一下設(shè)置元素的排版,我們這里使用流式布局器讓所有元素按照順序排列,或許你會(huì)覺得下面的順序就要嚴(yán)格按照順序來了,其實(shí)不然,在最后會(huì)有一個(gè)添加元素的程序操作,那才是決定排版因素的程序
//設(shè)置布局規(guī)則 ?? ??? ?FlowLayout fl=new FlowLayout(); ?? ??? ?jf.setLayout(fl);
設(shè)置文本框(即輸入框)
//設(shè)置輸入框 JTextField inputbox=new JTextField(); ?//設(shè)置框架大小 ?Dimension dim=new Dimension(400,50);//這個(gè)大小設(shè)置也是暫定的 //這里設(shè)置的大小還未應(yīng)用到輸入框里,所以還要引入,用setPreferredSize來表示 ?inputbox.setPreferredSize(dim);
注意,每一個(gè)框架內(nèi)的元素最后都要用程序添加到框架中,否則將只存在一個(gè)框架,這一步將在最后進(jìn)行。
設(shè)置按鍵
由于計(jì)算器按鍵很多所以要在設(shè)置前先列出來
在這里暫且借用一下系統(tǒng)計(jì)算器的排版,由于是簡(jiǎn)易版,我也只會(huì)取部分來編寫
//設(shè)置按鈕 ?? ??? ?JButton buttn1=new JButton(" % "); ?? ??? ?JButton buttn2=new JButton(" CE"); ?? ??? ?JButton buttn3=new JButton(" C "); ?? ??? ?JButton buttn4=new JButton(" ← "); ?? ??? ?JButton buttn5=new JButton(" 7 "); ?? ??? ?JButton buttn6=new JButton(" 8 "); ?? ??? ?JButton buttn7=new JButton(" 9 "); ?? ??? ?JButton buttn8=new JButton(" ÷ "); ?? ??? ?JButton buttn9=new JButton(" 4 "); ?? ??? ?JButton buttn10=new JButton(" 5 "); ?? ??? ?JButton buttn11=new JButton(" 6 "); ?? ??? ?JButton buttn12=new JButton(" × "); ?? ??? ?JButton buttn13=new JButton(" 1 "); ?? ??? ?JButton buttn14=new JButton(" 2 "); ?? ??? ?JButton buttn15=new JButton(" 3 "); ?? ??? ?JButton buttn16=new JButton(" - "); ?? ??? ?JButton buttn17=new JButton("幫助"); ?? ??? ?JButton buttn18=new JButton(" 0 "); ?? ??? ?JButton buttn19=new JButton(" ? "); ?? ??? ?JButton buttn20=new JButton(" = ");
給按鍵設(shè)置一個(gè)顏色
Color color=new Color(255,255,255);//表示白色 ?? ??? ?Color color2=new Color(177,183,214);//淡藍(lán)色 ?? ??? ?buttn1.setBackground(color); ?? ??? ?buttn2.setBackground(color); ?? ??? ?buttn3.setBackground(color); ?? ??? ?...
由于有20 個(gè)按鍵這里就不一一例舉了
將元素添加到框架中
在這一步當(dāng)中計(jì)算器的界面就基本實(shí)現(xiàn)了,剩下的只需要將元素加到框架中即可,注意,這里的添加順序決定了按鍵及框架的排版。
這里我們先試試整體效果,在這之后再添加監(jiān)聽器功能。
//將元素加到框架中 ?? ??? ?jf.add(inputbox); ?? ??? ?jf.add(buttn1); ?? ??? ?jf.add(buttn2); ?? ??? ?jf.add(buttn3); ?? ??? ?jf.add(buttn4); ?? ??? ?jf.add(buttn5); ?? ??? ?······
設(shè)置元素可顯示
jf.setVisible(true);//關(guān)鍵操作,沒有則不能顯示。?? ?
讓我們看看初步成果
顯然大小調(diào)試不當(dāng),那么我們來調(diào)一調(diào)大小
通過測(cè)試是257和294,然后我們?cè)僬{(diào)整之前設(shè)定的大小,給定數(shù)值,固定大小即可
小結(jié)
做出來的這個(gè)計(jì)算器只是個(gè)界面,實(shí)際功能是無法使用的,下一次的文章中我將實(shí)現(xiàn)監(jiān)聽器功能,即點(diǎn)擊按鈕即可打入輸入框,以及點(diǎn)擊幫助后彈出第二個(gè)界面。那么這次的介紹就到這里,下次再見。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java原生序列化和Kryo序列化性能實(shí)例對(duì)比分析
這篇文章主要介紹了java原生序列化和Kryo序列化性能實(shí)例對(duì)比分析,涉及Java和kryo序列化和反序列化相關(guān)實(shí)例,小編覺得很不錯(cuò),這里分享給大家,希望給大家一個(gè)參考。2017-10-10mybatis-plus自動(dòng)填充插入更新時(shí)間有8小時(shí)時(shí)差
本文主要介紹了mybatis-plus自動(dòng)填充插入更新時(shí)間有8小時(shí)時(shí)差,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java Socket編程簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java Socket編程簡(jiǎn)介的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05java8中parallelStream性能測(cè)試及結(jié)果分析
本篇文章給大家用代碼實(shí)例做了segmentfaultjava8中parallelStream性能測(cè)試,并對(duì)測(cè)試結(jié)果做了說明,需要的朋友學(xué)習(xí)下吧。2018-01-01Spring擴(kuò)展BeanFactoryPostProcessor使用技巧詳解
這篇文章主要為大家介紹了Spring擴(kuò)展BeanFactoryPostProcessor使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09使用@ConfigurationProperties實(shí)現(xiàn)類型安全的配置過程
這篇文章主要介紹了使用@ConfigurationProperties實(shí)現(xiàn)類型安全的配置過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Springboot中的@ConditionalOnBean注解詳細(xì)解讀
這篇文章主要介紹了Springboot中的@ConditionalOnBean注解詳細(xì)解讀,@ConditionalOnMissingBean注解兩個(gè)類,一個(gè)Computer類,一個(gè)配置類,想要完成;如果容器中沒有Computer類,就注入備用電腦Computer類,如果有Computer就不注入,需要的朋友可以參考下2023-11-11