Table des matières
1. Objectifs de conception
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 ;
Maison Java javaDidacticiel 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

May 01, 2023 pm 11:49 PM
java gui

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);
			}
		}
	}
Copier après la connexion

‏ 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("");
			}
Copier après la connexion

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();
	}
}
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles