Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

WBOY
Lepaskan: 2023-05-01 23:49:18
ke hadapan
1613 orang telah melayarinya

1. Matlamat reka bentuk

(1) Fungsi utama: merealisasikan operasi teropong mudah seperti tambah, tolak, darab dan bahagi, dan operasi bermata seperti punca kuasa dua dan peratusan

( 2 ) Fungsi kebolehaksesan: Butang "C" menyedari mengosongkan kotak teks; butang "←" merealisasikan ruang belakang dan memadam aksara paling kanan dalam kotak teks

2. Reka bentuk antara muka

Buat " Objek Panel " dan tetapkan mod pengurusan reka letaknya kepada mod susun atur GridLayout sebanyak 5 baris dan 4 lajur untuk memuatkan 20 butang. Kotak teks dan panel yang memuatkan 20 komponen butang menggunakan kaedah susun atur sempadan untuk susun aturnya ke bentuk BorderLayout.NORTH dan kedudukan tengah BorderLayout.CENTER masing-masing

Kemudian tetapkan kandungan teks 20 butang: isytihar dan cipta Tatasusunan jenis String menyimpan kandungan teks pada 20 butang Isytihar dan cipta tatasusunan jenis JButton (atau jenis Butang), dan gunakan gelung for untuk menambah teks pada 20 butang dalam urutan.

Mari kita lihat kesan antara muka akhir dahulu:

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

3 Pelaksanaan fungsional

Gunakan "model pemprosesan acara yang diwakilkan". untuk pemprosesan acara , sebagai tindak balas kepada operasi pengguna. Komponen utama yang digunakan kali ini ialah butang dan kotak teks, jadi ia boleh dikelaskan sebagai kelas ActionEvent Gunakan antara muka pendengar acara ActionListener untuk melaksanakan kaedah actionPerformed untuk bertindak balas kepada acara.

Pelaksanaan fungsi pengiraan: Beri perhatian kepada pemprosesan berbeza pengendali binari dan pengendali unari. Operator binari mentakrifkan pembolehubah untuk menyimpan nilai operan pertama dan nilai selepas operasi binari Hasil operasi dipaparkan dalam kotak teks dengan mengklik "=". Operator unary, selepas memasukkan nilai, klik operator untuk memaparkan hasil operasi terus dalam kotak teks. Fungsi punca kuasa dua dilaksanakan dengan memanggil kaedah sqrt() kelas Matematik Operasi peratusan boleh didarab terus dengan 0.01, kerana sebagai contoh, 12%=12*0.01+0.12, kaedah untuk melaksanakan pengiraan ditakrifkan khas. untuk tujuan ini. Sebahagian daripada kod adalah seperti berikut:

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);
			}
		}
	}
Salin selepas log masuk

‏ Mula-mula dapatkan rentetan ungkapan pengiraan "8+5" input oleh pengguna melalui komponen butang daripada input kotak teks, mula-mula tukarkannya menjadi tatasusunan aksara, jika ia adalah operasi binari, mula-mula cari kedudukan operator melalui gelung , dan kemudian gunakan StringTokenizer Pembahagian aksara dan kaedah penyuntingan subrentetan(a,b) dalam kelas memperoleh rentetan yang subskripnya bermula daripada a dan berakhir dengan b-1 (selang kiri-tutup dan kanan-buka), dan menggunakan operator sebagai garis pemisah untuk memisahkan dua aksara Dua aksara angka dipisahkan, iaitu dua aksara '8' dan '5' masing-masing diperoleh, dan kemudian kaedah Double.parseDouble() digunakan untuk mengubahnya menjadi titik terapung. nombor 8.0 dan 5.0 yang boleh dikendalikan Akhirnya, mengikut operasi yang berbeza Operator melakukan pengiraan yang sepadan dan menyimpan hasilnya dalam hasil pembolehubah. Operator unary adalah sama, kecuali selepas pemisahan, hanya terdapat satu operan kiri dan tiada operan kanan.

Pelaksanaan butang "C" untuk mengosongkan kotak teks: panggil kaedah ahli setText("") objek kotak teks dan tetapkan semula kepada rentetan kosong

Butang "← " keluar Pelaksanaan grid: mula-mula dapatkan rentetan dalam kotak teks, kemudian panggil subrentetan kaedah ahli() untuk mendapatkan subrentetan yang tinggal selepas mengalih keluar aksara terakhir, dan akhirnya tetapkan rentetan sebagai kandungan objek kotak teks. Sebahagian daripada kod adalah seperti berikut:

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

4. Semua kod

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();
	}
}
Salin selepas log masuk

5. Ujian fungsional

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Tambahan

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Penolakan

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Pendaraban

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Pembahagian

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Akar kuasa dua

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Jelas

Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan