java圖形界面AWT編寫(xiě)計(jì)算器
一、前言
1)、這個(gè)計(jì)算器是基于java語(yǔ)言下圖形界面AWT編寫(xiě)的。其實(shí)我認(rèn)為寫(xiě)這個(gè)計(jì)算器,實(shí)現(xiàn)什么功能不重要,市場(chǎng)也不缺這個(gè)計(jì)算器,而是在于對(duì)AWT中三大布局的及畫(huà)板的使用簡(jiǎn)單控件的操作使用。通過(guò)聯(lián)系熟悉掌握AWT基礎(chǔ)為深入學(xué)習(xí)打下基礎(chǔ)。這個(gè)計(jì)算器功能也十分簡(jiǎn)單,空有其表。不過(guò)有興趣的話可以繼續(xù)添加功能完善操作等。
2)、使用平臺(tái):主要使用Myeclipse2014
3)、主要知識(shí)點(diǎn):java 基礎(chǔ); awt+swing
二、功能實(shí)現(xiàn)及代碼展示
1)、主要是layout布局的練習(xí),對(duì)畫(huà)板文本框的使用,以及控件button的事件的注冊(cè)與監(jiān)聽(tīng)。因?yàn)楣δ芤埠芎?jiǎn)單,所以代碼就簡(jiǎn)寫(xiě)到同一個(gè)類里了。實(shí)現(xiàn)了基本的四則運(yùn)算。
2)、代碼如下:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
public class JiSuanJi {
private JFrame frame; //聲明相關(guān)布局面板
private JPanel panelwest;
private JPanel panelcenter;
private JPanel paneleast;
private TextField tf;
private JButton buttonzero; //聲明按鈕控件
private JButton buttondot;
private JButton buttonequal;
private JButton buttonplus,buttonminus,buttonmultiple,buttondevision,buttonsin,buttontozero;
private JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,buttonseven,buttoneight,buttonnine;
private ButtonListener listener; //聲明監(jiān)聽(tīng)事件
public static void main(String args[]){
new JiSuanJi();
}
public JiSuanJi(){
initView(); //實(shí)例化相關(guān)對(duì)象
setCenter(); //布局添加控件及相關(guān)控件處理
setWest();
setEast();
addListener(); //設(shè)置監(jiān)聽(tīng)
setFrame(); //對(duì) frame設(shè)置布局及顯示處理
}
class ButtonListener implements ActionListener{
int biaozhi=0; //初始化相關(guān)變量
double flag1=0,flag2=0,flag3=0;
//@Override
public void actionPerformed(ActionEvent e){
//(1)通過(guò) e.getSource(),獲取點(diǎn)擊事件的按鈕來(lái)源,作出相應(yīng)處理
if(e.getSource()==buttondot){
tf.setText("0.");
}
if(e.getSource()==buttontozero){
tf.setText("");
}
if(e.getSource()==buttonzero){
tf.setText(tf.getText()+"0");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonone){
tf.setText(tf.getText()+"1");//文本框顯示1、2、3.。。
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttontwo){
tf.setText(tf.getText()+"2");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonthree){
tf.setText(tf.getText()+"3");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonfour){
tf.setText(tf.getText()+"4");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonfive){
tf.setText(tf.getText()+"5");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonsix){
tf.setText(tf.getText()+"6");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonseven){
tf.setText(tf.getText()+"7");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttoneight){
tf.setText(tf.getText()+"8");
flag1=Double.parseDouble(tf.getText());
}
else if(e.getSource()==buttonnine){
tf.setText(tf.getText()+"9");
flag1=Double.parseDouble(tf.getText());
}
if(e.getSource()==buttonplus){
tf.setText("");
flag2=flag1;
biaozhi=0;
}
if(e.getSource()==buttonminus){
tf.setText("");
flag2=flag1;
biaozhi=1;
}
if(e.getSource()==buttonmultiple){
tf.setText("");
flag2=flag1;
biaozhi=2;
}
if(e.getSource()==buttondevision){
tf.setText("");
flag2=flag1;
biaozhi=3;
}
if(e.getSource()==buttonsin){
flag3=Math.sin(flag1);
tf.setText(flag3+"");
}
if(e.getSource()==buttonequal){
if(biaozhi==0){
flag3=flag2+flag1;
}
if(biaozhi==1){
flag3=flag2-flag1;
}
if(biaozhi==2){
flag3=flag2*flag1;
}
if(biaozhi==3){
flag3=flag2/flag1;
}
tf.setText(flag3+"");
}
}
}
private void initView(){
/**
* 創(chuàng)建框架、小容器對(duì)象、按鈕對(duì)象
*/
tf = new TextField(30);//初始化界面寬度
frame = new JFrame("簡(jiǎn)易計(jì)算機(jī)");
panelcenter = new JPanel();
panelwest = new JPanel();
paneleast = new JPanel();
listener = new ButtonListener(); //實(shí)例化監(jiān)聽(tīng)對(duì)象
}
private void setCenter(){
//(1)初始化控件顯示值
buttonone=new JButton("1");
buttontwo=new JButton("2");
buttonthree=new JButton("3");
buttonfour=new JButton("4");
buttonfive=new JButton("5");
buttonsix=new JButton("6");
buttonseven=new JButton("7");
buttoneight=new JButton("8");
buttonnine=new JButton("9");
//(2)設(shè)置布局樣式
panelcenter.setLayout(new GridLayout(3,3));//根據(jù)內(nèi)容多少來(lái)布局
//(3)中央布局添加控件按鈕
panelcenter.add(buttonone);
panelcenter.add(buttontwo);
panelcenter.add(buttonthree);
panelcenter.add(buttonfour);
panelcenter.add(buttonfive);
panelcenter.add(buttonsix);
panelcenter.add(buttonseven);
panelcenter.add(buttoneight);
panelcenter.add(buttonnine);
}
private void setEast(){
//(1)設(shè)置控件顯示符號(hào)
buttonplus=new JButton("+");
buttonminus=new JButton("-");
buttonmultiple=new JButton("*");
buttondevision=new JButton("/");
buttonsin=new JButton("sin");
buttontozero=new JButton("清除");
//(2)設(shè)置布局樣式
paneleast.setLayout(new GridLayout(3,2));
//(3)右布局添加相應(yīng)按鈕控件
paneleast.add(buttonplus);
paneleast.add(buttonminus);
paneleast.add(buttonmultiple);
paneleast.add(buttondevision);
paneleast.add(buttonsin);
paneleast.add(buttontozero);
}
private void setWest(){
//(1)初始化控件顯示值
buttonzero=new JButton("0");
buttondot=new JButton(".");
buttonequal = new JButton("=");
//(2)對(duì)這三個(gè)按鈕設(shè)置布局
panelwest.setLayout(new GridLayout(3,1));
//(3)左邊布局添加按鈕控件,將三個(gè)按鈕添加入布局
panelwest.add(buttonzero);
panelwest.add(buttondot);
panelwest.add(buttonequal);
}
private void addListener(){
//(1)對(duì) 1-9對(duì)應(yīng)的按鈕添加監(jiān)聽(tīng)
buttonone.addActionListener(listener);
buttontwo.addActionListener(listener);
buttonthree.addActionListener(listener);
buttonfour.addActionListener(listener);
buttonfive.addActionListener(listener);
buttonsix.addActionListener(listener);
buttonseven.addActionListener(listener);
buttoneight.addActionListener(listener);
buttonnine.addActionListener(listener);
//(2)對(duì)運(yùn)算符對(duì)應(yīng)的按鈕添加監(jiān)聽(tīng)
buttonplus.addActionListener(listener);
buttonminus.addActionListener(listener);
buttonmultiple.addActionListener(listener);
buttondevision.addActionListener(listener);
buttonsin.addActionListener(listener);
buttontozero.addActionListener(listener);
//(3)對(duì)其與的符號(hào)對(duì)應(yīng)的按鈕監(jiān)聽(tīng)
buttonzero.addActionListener(listener);
buttondot.addActionListener(listener);
buttonequal.addActionListener(listener);
}
private void setFrame(){
frame.setLayout(new BorderLayout());
//將準(zhǔn)備的不同方位的內(nèi)容加入大框架
frame.add(paneleast,"East");
frame.add(tf,BorderLayout.NORTH);
frame.add(panelwest,BorderLayout.WEST);
frame.add(panelcenter,BorderLayout.CENTER);
//設(shè)置顏色
tf.setBackground(Color.green);
frame.pack();
//將框架展開(kāi)
frame.setLocation(500,500);
//程序框架在屏幕的位置
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//退出進(jìn)程,不加此句,關(guān)閉頁(yè)面但程序進(jìn)程仍在后臺(tái)運(yùn)行
frame.setVisible(true);
//一個(gè)圖形界面默認(rèn)都是不可見(jiàn)的,setVisible是把圖形界面設(shè)置為可見(jiàn)
}
}
代碼測(cè)試可用。
三、演示與效果
1)、運(yùn)行界面如下:

當(dāng)然了圖形界面大小位置可調(diào),也可初始化其位置與大小。
2)、簡(jiǎn)單測(cè)試四則運(yùn)算:11*12



好像簡(jiǎn)單的不能再簡(jiǎn)單了。這個(gè)計(jì)算器寫(xiě)下來(lái)重點(diǎn)是布局的聯(lián)系與button的簡(jiǎn)單使用。
關(guān)于計(jì)算器的精彩文章請(qǐng)查看《計(jì)算器專題》 ,更多精彩等你來(lái)發(fā)現(xiàn)!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器類實(shí)例
- Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)
- java 簡(jiǎn)單的計(jì)算器程序?qū)嵗a
- Java swing實(shí)現(xiàn)的計(jì)算器功能完整實(shí)例
- java實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能
- Java實(shí)現(xiàn)計(jì)算器的代碼
- java實(shí)現(xiàn)計(jì)算器功能
- 用Java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
- 如何用Java的swing編寫(xiě)簡(jiǎn)單計(jì)算器
相關(guān)文章
Java中的Random()函數(shù)及兩種構(gòu)造方法
Java中存在著兩種Random函數(shù)分別是java.lang.Math.Random和java.util.Random,文中給大家介紹了random()的兩種構(gòu)造方法,感興趣的朋友跟隨小編一起看看吧2018-11-11
Spring MVC攔截器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC的攔截器,是屬于HandlerMapping級(jí)別的,可以有多個(gè)HandlerMapping ,每個(gè)HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過(guò)本文學(xué)習(xí)吧2017-08-08
基于JavaSwing設(shè)計(jì)和實(shí)現(xiàn)的酒店管理系統(tǒng)
這篇文章主要介紹了基于JavaSwing+mysql的酒店管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn),它可以實(shí)現(xiàn)酒店日常的管理功能包括開(kāi)房、退房、房間信息、顧客信息管理等2021-08-08
springboot集成flyway自動(dòng)創(chuàng)表的詳細(xì)配置
Flayway是一款數(shù)據(jù)庫(kù)版本控制管理工具,支持?jǐn)?shù)據(jù)庫(kù)版本自動(dòng)升級(jí),Migrations可以寫(xiě)成sql腳本,也可以寫(xiě)在java代碼里;本文通過(guò)實(shí)例代碼給大家介紹springboot集成flyway自動(dòng)創(chuàng)表的詳細(xì)過(guò)程,感興趣的朋友一起看看吧2021-06-06
MyBatisPlus中批量插入之如何通過(guò)開(kāi)啟rewriteBatchedStatements=true
這篇文章主要介紹了MyBatisPlus中批量插入之如何通過(guò)開(kāi)啟rewriteBatchedStatements=true問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03

