Écrivez une application qui simule une calculatrice, en utilisant une disposition en panneaux et en grille, en ajoutant une zone de texte, 10 boutons numériques (0 ~ 9), 4 boutons d'addition, de soustraction, de multiplication et de division, un bouton de signe égal, un bouton d'effacement et un carré. Le bouton racine, un bouton d'espacement arrière, nécessite que la formule de calcul et les résultats soient affichés dans la zone de texte, et l'effet est comme indiqué dans la figure ci-dessous.
Code de la calculatrice simple Java :
import javax.swing.*; import javax.swing.JTextField; import java.awt.*; import java.awt.event.*; import java.awt.Color étend les implémentations de JFrame; ActionListener { private JPanel p1 = new JPanel(); //Créer un panneau private JPanel p2 = private JTextField(); t1; //La zone de texte 1 est utilisée pour afficher les informations d'entrée private JTextField t2; //La zone de texte 2 est utilisée pour afficher les informations de résultat private JLabel label; //Informations sur l'étiquette StringBuffer str; ,y ; //x et y sont tous deux des opérandes int z ; //Z représente l'opérateur sur lequel vous avez cliqué, 0 représente "+", 1 représente "-", 2 représente "/" private JButton b[. ] = nouveau JButton[12]; //Créer un tableau avec 12 boutons private JButton b1,b2,b3,b4,b5,b6,b7,b8; //Bouton de fonction arithmétique public Ex5_2() { super("Simple Calculator" ); /Nom de la fenêtre Conteneur c = getContentPane(); //Créer un objet de panneau de contenu t1 = new JTextField(30); t1.setEditable(false); //Peut être affiché uniquement, ne peut pas être modifié t2 = new JTextField(30); t2.setEditable(false); //Peut être affiché uniquement, ne peut pas être modifié label = new JLabel("Bienvenue dans Calculatrice de l'édition Xiaowu ^_^o~ Travaillez dur ! "); label.setForeground(Color.blue); //Créez un tampon de chaîne vide str=new StringBuffer(); p2.add(label); //Ajouter une étiquette au panneau p2.add(t2); //Ajouter une zone de texte au panneau p2.add(t1); //Ajouter une zone de texte au panneau p2.setLayout(new GridLayout(4,1); )); //Put La disposition du panneau est de 4 lignes et 1 colonne pour (int i=0;i<10;i++) //Définissez les étiquettes pour les boutons 0~9 dans le tableau et enregistrez les écouteurs { String s=""+ je; b [je] = nouveau JButton(s); b[i].addActionListener(this); } //Instancier chaque bouton b[10]= new JButton("-/+"); b[11]= new JButton("."); = nouveau JButton("/"); b2= nouveau JButton("Retour"); b3= nouveau JButton("*"); b4= nouveau JButton("C"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); b8= new JButton("="); ; i<12;i++) { b[i].setForeground(Color.blue); } b1.setForeground(Color.red); b5.setForeground(Color.red); b7.setForeground(Color.red); b2.setForeground(Color.blue); b4.setForeground(Color.blue); .blue); //Ajouter au panneau p1.add(b[7]); p1.add(b[8]); p1.ajouter(b[9]); p1.ajouter(b1); p1.ajouter(b2); p1.ajouter(b[4]); 6]); p1.ajouter(b3); p1.ajouter(b4); p1.ajouter(b[1]); p1.ajouter(b5); p1.ajouter(b6); p1.ajouter(b[0]); p1.ajouter(b[10]); ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //Enregistrer l'écouteur b[10].addActionListener(this); b[11].addActionListener(ce); b1.addActionListener(ce); b2.addActionListener(ce); b3.addActionListener(ce); ) ); b7.addActionListener(ce); b8.addActionListener(ce); //Ajouter le panneau au panneau de contenu c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); //Définir la disposition séquentielle setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenêtre à fermer Action setVisible(true); //Définir sur visible setResizing(false); //Interdire l'ajustement de la taille du cadre setSize(400,300); //Définir la taille de la fenêtre} //La méthode main implémente la création d'une fenêtre public static void main(String[] args) { Ex5_2 f = new Ex5_2(); } //Traitement des événements de bouton public void actionPerformed(ActionEvent e) { try { if(e.getSource( )==b4) //Sélectionnez "C" pour effacer { t1.setText("0"); //Effacer la zone de texte t1.setHorizontalAlignment(JTextField.RIGHT); //Aligne le texte à droite str.setLength(0); //Efface le tampon de chaîne pour préparer la réception de nouveaux opérandes d'entrée} else if(e.getSource); ()==b[10])//Cliquez sur "+/-" pour sélectionner si l'opérande d'entrée est un nombre positif ou négatif{ x=Double.parseDouble(t1.getText().trim());//La fonction trim consiste à supprimer les espaces dans la chaîne t1.setText(""+(-x)); t1.setHorizontalAlignment(JTextField.RIGHT) ; } else if (e.getSource()==b5)//Cliquez sur le bouton plus pour obtenir la valeur de x et z et effacer la valeur de y{ x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; } else if(e.getSource()==b7)//Cliquez pour réduire Button obtient la valeur de x et z et efface la valeur de y { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e.getSource()==b3)//Cliquez sur le bouton de multiplication pour obtenir la valeur de x et z et effacer la valeur de y{ x =Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d z=2; if(e.getSource()==b1)//Cliquez sur le bouton de division pour obtenir la valeur de x et z et effacer la valeur de y{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3; } else if(e.getSource()==b8)//Cliquez sur le bouton du signe égal pour afficher le résultat du calcul { str.setLength(0); switch(z) { cas 0 : t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; cas 1 : t1.setText(""+(xy)); setHorizontalAlignment(JTextField.RIGHT);break cas 2 : t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; cas 3 : t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT) ;pause; } } autre if(e.getSource()==b[11])//Cliquez sur le bouton "." pour saisir la décimale { if(t1.getText().trim().indexOf('.')!=-1) // Détermine si la chaîne contient déjà un point décimal { } else //S'il n'y a pas de point décimal { if(t1.getText().trim().equals("0"))//S'il est initialement affiché comme 0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } else if(t1.getText().trim().equals(""))/ /Si initialement affiché comme vide, ne faites rien {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=0d } else if(e.getSource()==b6) // Trouvez la racine carrée { x=Double.parseDouble(t1.getText().trim()); { t1.setText("Exception de format numérique"); t1.setHorizontalAlignment(JTextField.RIGHT); } else { t1.setText(""+Math.sqrt(x)); t1.setHorizontalAlignment(JTextField.RIGHT } str); .setLength(0); y=0d; } autre { if(e.getSource()==b[0])//Si la touche numérique "0" est sélectionnée { if(t1.getText().trim().equals("0"))//Si c'est le cas affiché Si l'affichage à l'écran est nul, aucune opération n'est effectuée {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); } else if (e.getSource()==b2) //La touche retour est sélectionnée { if(! t1.getText().trim().equals("0"))//Si l'affichage n'affiche pas zéro{ if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());//Une exception de chaîne hors limites peut être levée t1.setHorizontalAlignment(JTextField.RIGHT) ; } else { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim()); } else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT) ; y=Double.parseDouble(t1.getText().trim()); } } } catch(NumberFormatException e1){ t1.setText("Exception de format numérique"); t1.setHorizontalAlignment(JTextField.RIGHT); e1){t1.setText("Index de chaîne hors limites"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }Rendu d'opération :
Ceci termine la programmation d'une simple calculatrice Java. J'espère que cet article pourra inspirer tout le monde à écrire des calculatrices. Il ne s'agit que d'une simple calculatrice, et vous pourrez continuer à l'utiliser pour améliorer les fonctions de la calculatrice.