


Bagaimana untuk melaksanakan kalkulator kecil dalam pembangunan antara muka grafik Java GUI
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:
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('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ 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=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } }
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(""); }
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('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ 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=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } } public static void main(String[]args){ new Calculator(); } }
5. Ujian fungsional
Tambahan
Penolakan
Pendaraban
Pembahagian
Akar kuasa dua
Jelas
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
