Maison  >  Article  >  Java  >  Comment implémenter une petite calculatrice à l'aide du développement d'une interface graphique Java GUI

Comment implémenter une petite calculatrice à l'aide du développement d'une interface graphique Java GUI

WBOY
WBOYavant
2023-05-01 23:49:181588parcourir

1. Objectifs de conception

(1) Fonctions principales : réaliser des opérations binoculaires simples telles que l'addition, la soustraction, la multiplication, la division, etc., et des opérations monoculaires telles que la racine carrée et le pourcentage #🎜 🎜#

(2) Fonction d'accessibilité : le bouton "C" permet d'effacer la zone de texte ; le bouton "←" réalise le retour arrière et supprime le caractère le plus à droite dans la zone de texte

2. Conception de l'interface # 🎜🎜#

Créez un "objet panneau" et définissez son mode de gestion de mise en page sur une mise en page GridLayout de 5 lignes et 4 colonnes pour accueillir 20 boutons. La zone de texte et le panneau qui accueille 20 composants de bouton utilisent la méthode de disposition des bordures pour les disposer respectivement sous la forme BorderLayout.NORTH et la position centrale BorderLayout.CENTER ;

Ensuite, définissez le contenu du texte des 20 ; boutons : Instruction Et créez un tableau de type String pour stocker le contenu du texte sur les 20 boutons, déclarez et créez un tableau de type JButton (ou type Button) et utilisez une boucle for pour ajouter du texte aux 20 boutons en séquence.

Jetons d'abord un coup d'œil à l'effet final de l'interface :

Comment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUI 3. Implémentation fonctionnelle

#🎜🎜 # Adoption Le « Modèle de traitement d'événements délégué » effectue un traitement d'événements en réponse aux opérations de l'utilisateur. Les principaux composants utilisés cette fois sont les boutons et les zones de texte, ils peuvent donc être classés comme classes ActionEvent. Utilisez l'interface d'écoute d'événements ActionListener pour implémenter la méthode actionPerformed pour répondre aux événements.

Implémentation de la fonction de calcul : Faites attention aux différents traitements des opérateurs binaires et des opérateurs unaires. L'opérateur binaire définit une variable pour stocker la valeur du premier opérande et la valeur après l'opération binaire. Le résultat de l'opération est affiché dans la zone de texte en cliquant sur "=". Opérateur unaire, après avoir saisi la valeur, cliquez sur l'opérateur pour afficher le résultat de l'opération directement dans la zone de texte. La fonction racine carrée est implémentée en appelant la méthode sqrt() de la classe Math. L'opération de pourcentage peut être directement multipliée par 0,01, car par exemple, 12%=12*0,01+0,12, une méthode pour implémenter le calcul est spécialement définie. à cet effet. Une partie du code est la suivante :

public void calculate(){
		char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置
		int i=0;//移动标志变量
		while(&#39;0&#39;<=arr[i]&&arr[i]<=&#39;9&#39;||arr[i]==&#39;.&#39;)//去除数字与小数点以确定双目运算符的位置
		      i++;
		char operator=arr[i];//将该运算符存储起来
		//双目运算
		if(operator!=&#39;%&#39;&&operator!=&#39;√&#39;){
			String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串
			s1=s.substring(0,i);
			s2=s.substring(i+1,s.length());
			Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数
			Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数
			//根据不同的运算符进行相应的计算
			if(operator==&#39;+&#39;)result=left+right;
			else if(operator==&#39;-&#39;)result=left-right;
			else if(operator==&#39;×&#39;)result=left*right;
			else if(operator==&#39;÷&#39;)result=left/right;
		}
		//单目运算
		else{
			String s=input.getText(),s1;
			s1=s.substring(0,s.length()-1);
			Double a=Double.parseDouble(s1);
			if(operator==&#39;%&#39;){
				result=0.01*a;
			}
			else if(operator==&#39;√&#39;){
				result=Math.sqrt(a);
			}
		}
	}

‏ Prenez l'expression d'opération 8+5 comme exemple. Obtenez d'abord la chaîne d'expression de calcul "8 + 5" saisie par l'utilisateur via le composant bouton à partir de la zone de texte, convertissez-la d'abord en un tableau de caractères, s'il s'agit d'une opération binaire, recherchez d'abord la position de l'opérateur via une boucle , puis utilisez StringTokenizer. La méthode de segmentation et d'édition de caractères substring(a,b) dans la classe obtient la chaîne dont l'indice commence par a et se termine par b-1 (intervalle fermé à gauche et ouvert à droite) et utilise l'opérateur comme la ligne de séparation pour diviser les deux caractères. Les deux caractères numériques sont séparés, c'est-à-dire que les deux caractères « 8 » et « 5 » sont obtenus respectivement, puis la méthode Double.parseDouble() est utilisée pour les transformer en virgule flottante. les numéros 8.0 et 5.0 qui peuvent être opérés. Enfin, selon différentes opérations, l'opérateur effectue les calculs correspondants et enregistre le résultat dans la variable result. L'opérateur unaire est le même, sauf qu'après le fractionnement, il n'y a qu'un seul opérande gauche et aucun opérande droit.

Implémentation du bouton "C" pour effacer la zone de texte : appeler la méthode membre setText("") de l'objet zone de texte et le remettre à une chaîne vide

Button " ←"L'implémentation du retour arrière : obtenez d'abord la chaîne dans la zone de texte, puis appelez la méthode membre substring() pour obtenir la sous-chaîne restante après avoir supprimé le dernier caractère, et enfin définissez la chaîne comme contenu de l'objet zone de texte . Une partie du code est la suivante :

            String str=input.getText();
			if(str.length()>1){
				str=str.substring(0,str.length()-1);
				input.setText(str);
			}
			else{
				input.setText("");
			}

4. Tout le code

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.StringTokenizer;
public class Calculator extends JFrame implements ActionListener{
	JTextField input;//文本框,显示计算结果
	JButton []button=new JButton[20];//按钮数组,存放20个按钮组件
	JPanel pan=new JPanel();
	String name[]={"C","÷", "×", "←","7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "√", "%", "0", ".", "="};//按钮标签数组
	double result;//存储双目运算的结果
	public Calculator(){
		setTitle("模拟计算器—江海大");
		pan.setLayout(new GridLayout(5,4));//设置面板pan的布局格式为5行4列的网格布局,存放20个按钮
		input=new JTextField(20);
		input.setText("");
		input.setFont(new Font("宋体",Font.BOLD,18));
		input.setForeground(Color.BLUE);
		for(int i=0;i<button.length;i++){
			button[i]=new JButton(name[i]);
			button[i].setFont(new Font("黑体",Font.BOLD,20));
			button[i].addActionListener(this);//给每一个按钮注册事件监听器
			pan.add(button[i]);
		}
		add(input,BorderLayout.NORTH);
		add(pan,BorderLayout.CENTER);
		setSize(600,400);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体
	}
	//动作响应
	public void actionPerformed(ActionEvent e){
		//如果点击按钮 "C"则触发清空文本框的操作
		if(e.getSource()==button[0]){
			input.setText("");
		}
		//如果点击按钮"="则调用计算方法并在文本框显示结果
		else if(e.getSource()==button[19]){
			calculate();
			input.setText(""+result);//输出计算结果
		}
		//如果点击"<--"按钮则删去文本框内字符串的末尾字符
		else if(e.getSource()==button[3]){
			String str=input.getText();
			if(str.length()>1){
				str=str.substring(0,str.length()-1);
				input.setText(str);
			}
			else{
				input.setText("");
			}
		}
		//以字符串拼接的方式将点击的按钮的标签拼接起来,成为一个运算表达式字符串
		else{
			input.setText(input.getText()+e.getActionCommand());
		}
	}
	public void calculate(){
		char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置
		int i=0;//移动标志变量
		while(&#39;0&#39;<=arr[i]&&arr[i]<=&#39;9&#39;||arr[i]==&#39;.&#39;)//去除数字与小数点以确定双目运算符的位置
		      i++;
		char operator=arr[i];//将该运算符存储起来
		//双目运算
		if(operator!=&#39;%&#39;&&operator!=&#39;√&#39;){
			String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串
			s1=s.substring(0,i);
			s2=s.substring(i+1,s.length());
			Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数
			Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数
			//根据不同的运算符进行相应的计算
			if(operator==&#39;+&#39;)result=left+right;
			else if(operator==&#39;-&#39;)result=left-right;
			else if(operator==&#39;×&#39;)result=left*right;
			else if(operator==&#39;÷&#39;)result=left/right;
		}
		//单目运算
		else{
			String s=input.getText(),s1;
			s1=s.substring(0,s.length()-1);
			Double a=Double.parseDouble(s1);
			if(operator==&#39;%&#39;){
				result=0.01*a;
			}
			else if(operator==&#39;√&#39;){
				result=Math.sqrt(a);
			}
 
		}
	}
	public static void main(String[]args){
		new Calculator();
	}
}

5. Test fonctionnel

AjoutComment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUI

SoustractionComment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUI

Multiplication#🎜 🎜 ##🎜 🎜 #Comment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUI

Division

Comment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUI

racine carrée

#🎜 🎜##🎜 🎜#Comment implémenter une petite calculatrice à laide du développement dune interface graphique Java GUIclear

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer