欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

?Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

 更新時(shí)間:2022年01月25日 15:01:45   作者:智子、  
這篇文章主要介紹了Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,下面文章圍繞Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1.簡(jiǎn)單計(jì)算器

使用AWT編程,FrameNORTH區(qū)域放置TextField組件,將指定為4行5列GridLayout布局管理器的Panel放置于Frame中部區(qū)域,其中填充操作符和操作數(shù)按鈕。
 按鈕觸發(fā)事件源,對(duì)按鈕添加ActionListener注冊(cè)監(jiān)聽(tīng)。自定義NumListener(操作數(shù)監(jiān)聽(tīng)類)、OperatListener(操作符監(jiān)聽(tīng)類)、EqualListener(’=‘符監(jiān)聽(tīng)類)和匿名內(nèi)部類(如b[11]’-'符監(jiān)聽(tīng)類)分情況對(duì)按鈕事件進(jìn)行監(jiān)聽(tīng)并響應(yīng)。
注意:整數(shù)、浮點(diǎn)、負(fù)數(shù)以及連續(xù)運(yùn)算均可以。

代碼:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import static java.awt.Color.blue;

public class Calculation {
? ? //操作數(shù)
? ? double x,y;
? ? String op;
? ? boolean flag;
? ? Frame frame = new Frame("智子的計(jì)算器!");
? ? TextField tf = new TextField(30);
? ? Button[] b = new Button[20];

? ? public void init(){
? ? ? ? //北部區(qū)域放置文本框
? ? ? ? frame.add(tf,BorderLayout.NORTH);
? ? ? ? Panel panel = new Panel();
? ? ? ? panel.setLayout(new GridLayout(4,5,2,2));
? ? ? ? //設(shè)置按鈕
? ? ? ? String s = "+-*/%";
? ? ? ? for(int i=0;i<10;i++) {//運(yùn)算數(shù)
? ? ? ? ? ? b[i] = new Button(i + "");
? ? ? ? ? ? b[i].setForeground(blue);
? ? ? ? }
? ? ? ? for(int i=0;i<5;i++) {//運(yùn)算符
? ? ? ? ? ? b[i+10]=new Button(s.charAt(i)+"");
? ? ? ? ? ? b[i+10].setForeground(blue);
? ? ? ? }
? ? ? ? String[] t = {"sqrt","^2","^3","=","."};
? ? ? ? for(int i=0;i<5;i++){
? ? ? ? ? ? b[i+15]=new Button(t[i]);
? ? ? ? ? ? b[i+15].setForeground(blue);
? ? ? ? }

? ? ? ? //按鈕注冊(cè)監(jiān)聽(tīng)
? ? ? ? for (int i = 0; i < 10; i++) {//操作數(shù)注冊(cè)監(jiān)聽(tīng)
? ? ? ? ? ? b[i].addActionListener(new NumListener());
? ? ? ? }

? ? ? ? for (int i = 10; i < 18; i++) {//操作符注冊(cè)監(jiān)聽(tīng)
? ? ? ? ? ? if(i==11) continue;
? ? ? ? ? ? b[i].addActionListener(new OperatListener());
? ? ? ? }
? ? ? ? b[11].addActionListener(new ActionListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void actionPerformed(ActionEvent e) {
? ? ? ? ? ? ? ? if(!flag){
? ? ? ? ? ? ? ? ? ? tf.setText("-");
? ? ? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? x = Double.parseDouble(tf.getText());
? ? ? ? ? ? ? ? ? ? op = e.getActionCommand();
? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //“=”注冊(cè)監(jiān)聽(tīng)
? ? ? ? b[18].addActionListener(new EqualListener());
? ? ? ? //“.”注冊(cè)監(jiān)聽(tīng)
? ? ? ? b[19].addActionListener(new NumListener());

? ? ? ? //將按鈕加入panel
? ? ? ? for (int i = 0; i < 20; i++) {
? ? ? ? ? ? panel.add(b[i]);
? ? ? ? }

? ? ? ? //設(shè)置中部按鈕
? ? ? ? frame.add(panel);

? ? ? ? //窗口監(jiān)聽(tīng)器 注冊(cè)監(jiān)聽(tīng)
? ? ? ? frame.addWindowListener(new WindowAdapter() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void windowClosing(WindowEvent e) {
? ? ? ? ? ? ? ? System.exit(0);
? ? ? ? ? ? }
? ? ? ? });

? ? ? ? //設(shè)置窗口最優(yōu)并可見(jiàn)
? ? ? ? frame.pack();
? ? ? ? frame.setVisible(true);
? ? }

? ? //數(shù)字按鈕監(jiān)聽(tīng)器類
? ? public class NumListener implements ActionListener{
? ? ? ? @Override
? ? ? ? public void actionPerformed(ActionEvent e) {
? ? ? ? ? ? String t = e.getActionCommand();
? ? ? ? ? ? String s = tf.getText();
? ? ? ? ? ? if(flag==false)
? ? ? ? ? ? ? ? tf.setText(t);
? ? ? ? ? ? else
? ? ? ? ? ? ? ? tf.setText(s+t);
? ? ? ? ? ? flag = true;
? ? ? ? }
? ? }

? ? //操作符按鈕監(jiān)聽(tīng)器類
? ? public class OperatListener implements ActionListener{
? ? ? ? @Override
? ? ? ? public void actionPerformed(ActionEvent e) {
? ? ? ? ? ? x = Double.parseDouble(tf.getText());
? ? ? ? ? ? op = e.getActionCommand();
? ? ? ? ? ? flag = false;
? ? ? ? }
? ? }

? ? //等號(hào)按鈕監(jiān)聽(tīng)器類
? ? public class EqualListener implements ActionListener{
? ? ? ? @Override
? ? ? ? public void actionPerformed(ActionEvent e) {
? ? ? ? ? ? y = Double.parseDouble(tf.getText());
? ? ? ? ? ? flag = true;
? ? ? ? ? ? switch(op){
? ? ? ? ? ? ? ? case "+":tf.setText(x+y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "-":tf.setText(x-y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "*":tf.setText(x*y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "/":
? ? ? ? ? ? ? ? ? ? if(y!=0)
? ? ? ? ? ? ? ? ? ? ? ? tf.setText(x/y+"");
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? tf.setText("inf");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "%":tf.setText(x%y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "sqrt":tf.setText((int)Math.sqrt(x)+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "^2":tf.setText(y*y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "^3":tf.setText(y*y*y+"");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }

? ? public static void main(String[] args) {

? ? ? ? new Calculation().init();
? ? }
}

到此這篇關(guān)于 Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器的文章就介紹到這了,更多相關(guān) Java圖形化界面編程實(shí)現(xiàn)計(jì)算器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Elasticsearch查詢之Match Query示例詳解

    Elasticsearch查詢之Match Query示例詳解

    這篇文章主要為大家介紹了Elasticsearch查詢之Match查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Eclipse中配置Maven build打包的方法步驟

    Eclipse中配置Maven build打包的方法步驟

    這篇文章主要介紹了Eclipse中配置Maven build打包的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java的super關(guān)鍵字與instanceof運(yùn)算符使用方法

    Java的super關(guān)鍵字與instanceof運(yùn)算符使用方法

    這篇文章主要介紹了Java的super關(guān)鍵字與instanceof運(yùn)算符使用方法,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • JSON.parseObject和JSON.toJSONString實(shí)例詳解

    JSON.parseObject和JSON.toJSONString實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了JSON.parseObject和JSON.toJSONString實(shí)例,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2018-06-06
  • MyBatis如何進(jìn)行雙重foreach循環(huán)

    MyBatis如何進(jìn)行雙重foreach循環(huán)

    這篇文章主要介紹了MyBatis如何進(jìn)行雙重foreach循環(huán),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring Boot 驗(yàn)證碼的生成和驗(yàn)證詳解

    Spring Boot 驗(yàn)證碼的生成和驗(yàn)證詳解

    我們?cè)谧鲇脩舻卿浀臅r(shí)候,為了安全性考慮,會(huì)增加驗(yàn)證碼的功能,下面這篇文章主要給大家介紹了關(guān)于Spring Boot中驗(yàn)證碼的生成和驗(yàn)證的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • Java 17 隨機(jī)數(shù)生成器來(lái)了一波穩(wěn)穩(wěn)的增強(qiáng)

    Java 17 隨機(jī)數(shù)生成器來(lái)了一波穩(wěn)穩(wěn)的增強(qiáng)

    JDK 當(dāng)中的隨機(jī)數(shù)生成器其實(shí)對(duì)于普通開(kāi)發(fā)者來(lái)講基本夠用,不過(guò)對(duì)于一些比較復(fù)雜的場(chǎng)景來(lái)講,原有的類結(jié)構(gòu)對(duì)擴(kuò)展并不是很友好,除了 Random 類,JDK 當(dāng)中還提供了另外幾個(gè)隨機(jī)數(shù)的成員,下面文章將詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09
  • Java黑盒測(cè)試之nextDate函數(shù)測(cè)試

    Java黑盒測(cè)試之nextDate函數(shù)測(cè)試

    這篇文章主要介紹了Java黑盒測(cè)試之nextDate函數(shù)測(cè)試,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java黑盒測(cè)試的小伙伴們有很大的幫助哦,需要的朋友可以參考下
    2021-05-05
  • mybatis中 if-test 數(shù)字判斷的坑及解決

    mybatis中 if-test 數(shù)字判斷的坑及解決

    這篇文章主要介紹了mybatis中 if-test 數(shù)字判斷的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java線程啟動(dòng)為什么要用start()而不是run()?

    Java線程啟動(dòng)為什么要用start()而不是run()?

    這篇文章主要介紹了線程啟動(dòng)為什么要用start()而不是run()?下面文章圍繞start()與run()的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值,西藥的小火熬版可以參考一下,希望對(duì)你有所幫助
    2021-12-12

最新評(píng)論