В этом руководстве по Java этот калькулятор имеет несколько простых функций, таких как все основные математические операции, и некоторые специальные дополнительные функции, которые мы увидим позже.
Итак, давайте начнем
🧿 Об АВТ
AWT (Abstract Window Toolkit) — это Java-приложение на основе API (графического пользовательского интерфейса), которое помогает создавать графический интерфейс. GUI использует некоторую графику, чтобы облегчить взаимодействие с пользователем. В основном он состоит из набора классов и методов, необходимых для упрощенного создания и управления кнопками графического интерфейса, окнами, фреймами, текстовыми полями, переключателями и т. д.
Код Java, который я предоставил, предназначен для интерфейса прослушивателя действий для калькулятора для обработки событий.
🎶 Раздел логики
🏀 1. Для цифровых кнопок
if(e.getSource()==b1){ //b1 代表数字 1
zt=l1.getText();
z=zt+"1";// 1 将合并在前一个值的末尾
l1.setText(z);
}
Когда нажата любая кнопка с цифрой, любое значение в метке l1 будет сохранено в переменной zt, а затем объединено с соответствующим числом, а затем отображено в метке l1, мы делаем то же самое для кнопок NEGATIVE и DECIMAL PTS.
✨ 2. Для арифметических кнопок
if(e.getSource()==badd){ //对应加法
num1=Double.parseDouble(l1.getText());
z="";
l1.setText(z);
check=1;
}
Теперь, после того как мы привели значение метки l1 к типу double, сохраните его в переменной num1, которая технически будет первым числом, а затем установите для метки l1 значение null.
Мы просто будем использовать контрольную переменную, чтобы нажимать эту конкретную пневматическую кнопку (здесь +), поэтому мы можем сделать это в нашей = кнопке
🍖 3. Для кнопки равно
if(e.getSource()==bcalc){
num2=Double.parseDouble(l1.getText());
if(check==1)
xd =num1+num2;
if(check==2)
xd =num1-num2;
if(check==3)
xd =num1*num2;
if(check==4)
xd =num1/num2;
if(check==5)
xd =num1%num2;
l1.setText(String.valueOf(xd));
}
Теперь снова сохраняем значение l1 в переменную num2, это будет второе число арифметически, потом проверяем значение переменной, проверяем потом делаем соответствующее действие, потом выводим результат в метку l1
🎥 4. Кнопка очистки
if(e.getSource()==bclr){
num1=0;
num2=0;
check=0;
xd=0;
z="";
l1.setText(z);
}
Здесь все переменные, которые мы используем, обновляются до значений по умолчанию, равных 0.
и установите для метки l1 значение null, чтобы мы могли начать новый расчет позже.
🏆 5. Для кнопки Backspace
if(e.getSource()==bback){
zt=l1.getText();
try{
z=zt.substring(0, zt.length()-1);
}catch(StringIndexOutOfBoundsException f){return;}
l1.setText(z);
}
Здесь просто l1 обновите значение, удалив последнюю цифру с помощью функции подстроки
и обработал исключение StringIndexOutOfBoundsException, которое возникает, когда у нас есть нулевое значение в метке, а кнопка «Назад» все еще нажата.
⏰ 6. Специальная функция плагина
Все, что я сделал, это обработал исключение в EQUAL и всех ARITHMETIC Buttons и напечатал нужное сообщение в зависимости от ситуации.
Математическая кнопка:
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
Равно кнопке:
try{
num2=Double.parseDouble(l1.getText());
}catch(Exception f){
l1.setText("ENTER NUMBER FIRST ");
return;
}
Когда мы преобразуем значение в двойное, но, скажем, метка l1 имеет нулевое значение (т. е. метка пуста), и мы все еще нажимаем эти кнопки, тогда будет сгенерировано исключение NumberFormatException, поэтому обработайте и распечатайте нужное сообщение.
==Пример==:
если я нажимаю 1, затем +, затем я нажимаю - вместо какой-либо другой кнопки с цифрой, так что это недопустимый формат, а когда - нажимается, метка пуста, поэтому генерируется исключение, поэтому просто обработайте его и распечатайте недопустимый формат на метке
Точно так же, когда метка пуста, и в этом случае нажмите = ВВЕДИТЕ НОМЕР ПЕРВЫЙ, отобразится внутри метки.
На данный момент мы завершили этот учебник по Java AWT.
🍺 Демонстрация GIF
💌 С полным кодом:
import java.awt.*;
import java.awt.event.*;
class MyCalc extends WindowAdapter implements ActionListener{
Frame f;
Label l1;
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
Button badd,bsub,bmult,bdiv,bmod,bcalc,bclr,bpts,bneg,bback;
double xd;
double num1,num2,check;
MyCalc(){
f= new Frame("MY CALCULATOR");
// 实例化组件
l1=new Label();
l1.setBackground(Color.LIGHT_GRAY);
l1.setBounds(50,50,260,60);
b1=new Button("1");
b1.setBounds(50,340,50,50);
b2=new Button("2");
b2.setBounds(120,340,50,50);
b3=new Button("3");
b3.setBounds(190,340,50,50);
b4=new Button("4");
b4.setBounds(50,270,50,50);
b5=new Button("5");
b5.setBounds(120,270,50,50);
b6=new Button("6");
b6.setBounds(190,270,50,50);
b7=new Button("7");
b7.setBounds(50,200,50,50);
b8=new Button("8");
b8.setBounds(120,200,50,50);
b9=new Button("9");
b9.setBounds(190,200,50,50);
b0=new Button("0");
b0.setBounds(120,410,50,50);
bneg=new Button("+/-");
bneg.setBounds(50,410,50,50);
bpts=new Button(".");
bpts.setBounds(190,410,50,50);
bback=new Button("back");
bback.setBounds(120,130,50,50);
badd=new Button("+");
badd.setBounds(260,340,50,50);
bsub=new Button("-");
bsub.setBounds(260,270,50,50);
bmult=new Button("*");
bmult.setBounds(260,200,50,50);
bdiv=new Button("/");
bdiv.setBounds(260,130,50,50);
bmod=new Button("%");
bmod.setBounds(190,130,50,50);
bcalc=new Button("=");
bcalc.setBounds(245,410,65,50);
bclr=new Button("CE");
bclr.setBounds(50,130,65,50);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b0.addActionListener(this);
bpts.addActionListener(this);
bneg.addActionListener(this);
bback.addActionListener(this);
badd.addActionListener(this);
bsub.addActionListener(this);
bmult.addActionListener(this);
bdiv.addActionListener(this);
bmod.addActionListener(this);
bcalc.addActionListener(this);
bclr.addActionListener(this);
f.addWindowListener(this);
//添加到框架
f.add(l1);
f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);f.add(b6); f.add(b7); f.add(b8);f.add(b9);f.add(b0);
f.add(badd); f.add(bsub); f.add(bmod); f.add(bmult); f.add(bdiv); f.add(bmod);f.add(bcalc);
f.add(bclr); f.add(bpts);f.add(bneg); f.add(bback);
f.setSize(360,500);
f.setLayout(null);
f.setVisible(true);
}
//关闭窗口
public void windowClosing(WindowEvent e) {
f.dispose();
}
public void actionPerformed(ActionEvent e){
String z,zt;
//数字按钮
if(e.getSource()==b1){
zt=l1.getText();
z=zt+"1";
l1.setText(z);
}
if(e.getSource()==b2){
zt=l1.getText();
z=zt+"2";
l1.setText(z);
}
if(e.getSource()==b3){
zt=l1.getText();
z=zt+"3";
l1.setText(z);
}
if(e.getSource()==b4){
zt=l1.getText();
z=zt+"4";
l1.setText(z);
}
if(e.getSource()==b5){
zt=l1.getText();
z=zt+"5";
l1.setText(z);
}
if(e.getSource()==b6){
zt=l1.getText();
z=zt+"6";
l1.setText(z);
}
if(e.getSource()==b7){
zt=l1.getText();
z=zt+"7";
l1.setText(z);
}
if(e.getSource()==b8){
zt=l1.getText();
z=zt+"8";
l1.setText(z);
}
if(e.getSource()==b9){
zt=l1.getText();
z=zt+"9";
l1.setText(z);
}
if(e.getSource()==b0){
zt=l1.getText();
z=zt+"0";
l1.setText(z);
}
if(e.getSource()==bpts){ //添加小数点
zt=l1.getText();
z=zt+".";
l1.setText(z);
}
if(e.getSource()==bneg){ //对于减
zt=l1.getText();
z="-"+zt;
l1.setText(z);
}
if(e.getSource()==bback){ // 退格用
zt=l1.getText();
try{
z=zt.substring(0, zt.length()-1);
}catch(StringIndexOutOfBoundsException f){return;}
l1.setText(z);
}
//算术按钮
if(e.getSource()==badd){ //对应加法
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
z="";
l1.setText(z);
check=1;
}
if(e.getSource()==bsub){ //对应减法
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
z="";
l1.setText(z);
check=2;
}
if(e.getSource()==bmult){ //对应乘法
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
z="";
l1.setText(z);
check=3;
}
if(e.getSource()==bdiv){ //对应除法
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
z="";
l1.setText(z);
check=4;
}
if(e.getSource()==bmod){ //对应MOD/剩余
try{
num1=Double.parseDouble(l1.getText());
}catch(NumberFormatException f){
l1.setText("Invalid Format");
return;
}
z="";
l1.setText(z);
check=5;
}
//结果按钮
if(e.getSource()==bcalc){
try{
num2=Double.parseDouble(l1.getText());
}catch(Exception f){
l1.setText("ENTER NUMBER FIRST ");
return;
}
if(check==1)
xd =num1+num2;
if(check==2)
xd =num1-num2;
if(check==3)
xd =num1*num2;
if(check==4)
xd =num1/num2;
if(check==5)
xd =num1%num2;
l1.setText(String.valueOf(xd));
}
//清除标签和内存
if(e.getSource()==bclr){
num1=0;
num2=0;
check=0;
xd=0;
z="";
l1.setText(z);
}
}
//实例化 MyCalc 对象的 main 方法
public static void main(String args[]){
new MyCalc();
}
}
😊 Что я хочу сказать в конце
Так что просто просмотрите код и попробуйте. Если у вас возникли трудности с пониманием или использованием кода, задайте их в комментариях ниже.
Если вы хотите скачать и запустить мой, я загрузил исходный код и исполняемый файл jar, вы можете найти его здесь:
GitHub.com/Ван Хао221/…Если вам нравится работа, поставьте ей звезду.
Я уже довольно давно веду блог о технологиях, и в основном через самородки, вот одна из моих технических статей/руководств. Я люблю делиться технологиями и радостью через статьи. Пожалуйста, посетите мой блог:Талант /user/204034…Чтобы получить больше информации. Надеюсь, вам это понравится! Вот краткое изложение всех моих оригинальных и исходных кодов работ:GitHub
Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поддержать ❤ или 📑