Heim > Java > javaLernprogramm > So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

WBOY
Freigeben: 2023-05-01 23:49:18
nach vorne
1616 Leute haben es durchsucht

1. Entwurfsziele

(1) Hauptfunktionen: einfache binokulare Operationen wie Addition, Subtraktion, Multiplikation und Division sowie monokulare Operationen wie Quadratwurzel und Prozentsatz realisieren

(2) Hilfsfunktionen: per Knopfdruck realisieren. C" Löschen Sie das Textfeld. Die Schaltfläche „←“ implementiert die Rücktaste und löscht das Zeichen ganz rechts im Textfeld Zeilen und 4 Spalten bieten Platz für 20 Tasten. Das Textfeld und das Bedienfeld, das 20 Schaltflächenkomponenten enthält, verwenden die Rahmenlayoutmethode, um sie in der Form BorderLayout.NORTH bzw. der zentralen Position BorderLayout.CENTER anzuordnen.

Legen Sie dann den Textinhalt der 20 Schaltflächen fest: Deklarieren und erstellen Sie eine String-Array: Speichern Sie den Textinhalt auf 20 Schaltflächen, deklarieren und erstellen Sie ein Array vom Typ JButton (oder Button-Typ) und verwenden Sie eine for-Schleife, um den 20 Schaltflächen nacheinander Text hinzuzufügen.

Werfen wir zunächst einen Blick auf den endgültigen Schnittstelleneffekt:

3. Funktionsimplementierung

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-SchnittstelleVerwenden des „Delegierten-Ereignisverarbeitungsmodells“ für die Ereignisverarbeitung, um auf Benutzervorgänge zu reagieren. Die Hauptkomponenten, die dieses Mal verwendet werden, sind Schaltflächen und Textfelder, sodass sie als ActionEvent-Klassen klassifiziert werden können. Verwenden Sie die ActionListener-Ereignis-Listener-Schnittstelle, um die actionPerformed-Methode zu implementieren, um auf Ereignisse zu reagieren.

Implementierung von Berechnungsfunktionen: Achten Sie auf die unterschiedliche Verarbeitung von binären Operatoren und unären Operatoren. Der Binäroperator definiert eine Variable zum Speichern des Werts des ersten Operanden und des Werts nach der Binäroperation. Das Ergebnis der Operation wird im Textfeld angezeigt, indem Sie auf „=" klicken. Unärer Operator: Klicken Sie nach Eingabe des Werts auf den Operator, um das Operationsergebnis direkt im Textfeld anzuzeigen. Die Quadratwurzelfunktion wird durch Aufrufen der Methode sqrt() der Math-Klasse implementiert. Die Prozentoperation kann direkt mit 0,01 multipliziert werden, da beispielsweise 12 % = 12 * 0,01 + 0,12 eine Methode zur Implementierung der Berechnung speziell definiert ist Zu diesem Zweck lautet ein Teil des Codes wie folgt:

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);
			}
		}
	}
Nach dem Login kopieren

‏ Codeidee: Nehmen Sie den Operationsausdruck 8+5 als Beispiel. Rufen Sie zunächst die vom Benutzer über die Schaltflächenkomponente eingegebene Berechnungsausdruckszeichenfolge „8 + 5“ aus der Textfeldeingabe ab und konvertieren Sie sie zunächst in ein Zeichenarray. Wenn es sich um eine binäre Operation handelt, ermitteln Sie zunächst die Position des Operators über eine Schleife , und verwenden Sie dann StringTokenizer Die Zeichensegmentierungs- und Bearbeitungsmethode substring(a,b) in der Klasse erhält die Zeichenfolge, deren Index bei a beginnt und mit b-1 endet (links geschlossenes und rechts offenes Intervall), und verwendet den Operator as Die Trennlinie zum Teilen der beiden Zeichen wird getrennt, dh die beiden Zeichen „8“ und „5“ werden erhalten, und dann wird die Methode Double.parseDouble() verwendet, um sie in Gleitkommazahlen umzuwandeln Zahlen 8,0 und 5,0, die schließlich je nach Operation bearbeitet werden können. Der Operator führt entsprechende Berechnungen durch und speichert das Ergebnis in der Variablen result. Der unäre Operator ist derselbe, außer dass es nach der Aufteilung nur einen linken Operanden und keinen rechten Operanden gibt.

Die Implementierung der Schaltfläche „C“ zum Löschen des Textfelds: Rufen Sie die Member-Methode setText(““) des Textfeldobjekts auf und setzen Sie sie auf eine leere Zeichenfolge zurück.

Die Implementierung der Schaltfläche „←“: Zuerst abrufen Geben Sie die Textfeldzeichenfolge in die Zeichenfolge ein, rufen Sie dann die Mitgliedsmethode substring () auf, um die verbleibende Teilzeichenfolge mit Ausnahme des letzten Zeichens abzurufen, und legen Sie schließlich die Zeichenfolge als Inhalt des Textfeldobjekts fest. Ein Teil des Codes lautet wie folgt:

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

4. Alle Codes

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();
	}
}
Nach dem Login kopieren

5. Funktionstest

Addition

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Subtraktion

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Multiplikation

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Abteilung

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Quadratwurzel

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Klar

So implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage