SlideShare a Scribd company logo
1 of 3
En esta práctica vamos a crear una sencilla calculadora utilizando el framework AWT (Abstract Window Toolkit) de Java.
Etiquetas: Frame, Panel, paquete AWT, Gestión de eventos, Notificador, Listener, interfaces y adaptadores, ActionListener,
WindowAdapter,…




Escuchador_WindowListener.java
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Escuchador_WindowListener extends WindowAdapter {

         public void windowClosing(WindowEvent evento){
                System.exit(0);
         }
}


Calculadora.java

import   java.awt.BorderLayout;
import   java.awt.Color;
import   java.awt.Frame;
import   java.awt.TextField;
import   java.awt.Panel;
import   java.awt.GridLayout;
import   java.awt.Button;
import   java.awt.event.ActionEvent;
import   java.awt.event.ActionListener;
import   java.awt.event.KeyEvent;
import   java.awt.event.KeyListener;

public class Calculadora extends Frame implements ActionListener,KeyListener{

         private static final long serialVersionUID = 1L;

         private   TextField pantalla = null;
         private   Button tecla = null;
         private   int operando1 = 0;
         private   int operando2 = 0;
         private   String operacion = null;
         private   boolean newDigitBlock = true;




                                                                              bitCoach::Juan Bautista Cascallar Lorenzo
//Constructor
public Calculadora(){

       this.setTitle("Calculadora");
       this.setSize(200, 200);
       this.setLayout(new BorderLayout());
       this.addWindowListener(new Escuchador_WindowListener());

       //--- Display ---
       pantalla = new TextField();
       pantalla.setText("0");
       pantalla.addKeyListener(this);
       pantalla.setBackground(Color.CYAN);
       this.add(pantalla,BorderLayout.NORTH);

       //--- Teclas ---
       Panel panel01 = new Panel();
       panel01.setLayout(new GridLayout(5,3));
       tecla = new Button("0"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("1"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("+"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("2"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("3"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("-"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("4"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("5"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("="); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("6"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("7"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("C"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("8"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button("9"); tecla.addActionListener(this); panel01.add(tecla);
       tecla = new Button(); tecla.setEnabled(false); panel01.add(tecla);
       this.add(panel01,BorderLayout.CENTER);
}

//--- Método de la interfaz ActionListener ---
@Override
public void actionPerformed(ActionEvent e) {
       // TODO Auto-generated method stub
       String teclaPulsada = ((Button)e.getSource()).getLabel();

       if(teclaPulsada.equals("C")){
               pantalla.setText("0");
               operando1 = 0;
               operando2 = 0;
               newDigitBlock = true;
       }else if(teclaPulsada.equals("=")){
               operando2 = Integer.parseInt(pantalla.getText());
               if(operacion != null){
                      if(operacion.equals("+")){
                              pantalla.setText(new Integer(operando1 + operando2).toString());
                      }else if (operacion.equals("-")){
                              pantalla.setText(new Integer(operando1 - operando2).toString());
                      }
               }
               newDigitBlock = true;
               operacion = null;
       }else if(teclaPulsada.equals("+") || teclaPulsada.equals("-")){
               operacion = teclaPulsada;
               operando1 = Integer.parseInt(pantalla.getText());
               newDigitBlock = true;
       }else{
               if(newDigitBlock == true){
                      pantalla.setText(teclaPulsada);
                      newDigitBlock = false;
               }else{
                      pantalla.setText(pantalla.getText() + teclaPulsada);
                      //--- Quitar 0 al principio ---
                      if((pantalla.getText().length() > 1) && (pantalla.getText().charAt(0) == '0')){
                              pantalla.setText(pantalla.getText().substring(1));
                      }
               }
       }
}//Fin function

                                                                   bitCoach::Juan Bautista Cascallar Lorenzo
//--- Métodos de la interfaz KeyListener ---
       @Override
       public void keyTyped(KeyEvent e) {
              // TODO Auto-generated method stub

       }

       @Override
       public void keyPressed(KeyEvent e) {
              // TODO Auto-generated method stub

       }

       @Override
       public void keyReleased(KeyEvent e) {
              // TODO Auto-generated method stub

       }

}

TestCalculadora.java

public class TestCalculadora {

       public static void main(String[] args) {
              // TODO Auto-generated method stub

              Calculadora c = new Calculadora();
              //c.pack();
              c.setVisible(true);
       }
}




                                                      bitCoach::Juan Bautista Cascallar Lorenzo

More Related Content

What's hot

Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Scott Wlaschin
 
Asynchronous programming
Asynchronous programmingAsynchronous programming
Asynchronous programmingFilip Ekberg
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlinintelliyole
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
Prototype programming in JavaScript
Prototype programming in JavaScriptPrototype programming in JavaScript
Prototype programming in JavaScriptTimur Shemsedinov
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Task parallel library presentation
Task parallel library presentationTask parallel library presentation
Task parallel library presentationahmed sayed
 
JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements IIReem Alattas
 
Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Scott Wlaschin
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationMouna Torjmen
 

What's hot (20)

Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)
 
Asynchronous programming
Asynchronous programmingAsynchronous programming
Asynchronous programming
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Exercices algo
Exercices algoExercices algo
Exercices algo
 
Unicode basics in python
Unicode basics in pythonUnicode basics in python
Unicode basics in python
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Python
PythonPython
Python
 
Résumé javascript
Résumé javascriptRésumé javascript
Résumé javascript
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlin
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Prototype programming in JavaScript
Prototype programming in JavaScriptPrototype programming in JavaScript
Prototype programming in JavaScript
 
Django Celery
Django Celery Django Celery
Django Celery
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Task parallel library presentation
Task parallel library presentationTask parallel library presentation
Task parallel library presentation
 
GMock framework
GMock frameworkGMock framework
GMock framework
 
JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements II
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 

Viewers also liked

Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 

Viewers also liked (20)

Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Word VBA
Word VBAWord VBA
Word VBA
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 

More from jubacalo

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

More from jubacalo (12)

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Recently uploaded

TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...Nguyen Thanh Tu Collection
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)Shankar Aware
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...Nguyen Thanh Tu Collection
 
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....سمير بسيوني
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...Idrees.Hishyar
 

Recently uploaded (6)

TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
 
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
 

Java AWT Calculadora

  • 1. En esta práctica vamos a crear una sencilla calculadora utilizando el framework AWT (Abstract Window Toolkit) de Java. Etiquetas: Frame, Panel, paquete AWT, Gestión de eventos, Notificador, Listener, interfaces y adaptadores, ActionListener, WindowAdapter,… Escuchador_WindowListener.java import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Escuchador_WindowListener extends WindowAdapter { public void windowClosing(WindowEvent evento){ System.exit(0); } } Calculadora.java import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.TextField; import java.awt.Panel; import java.awt.GridLayout; import java.awt.Button; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class Calculadora extends Frame implements ActionListener,KeyListener{ private static final long serialVersionUID = 1L; private TextField pantalla = null; private Button tecla = null; private int operando1 = 0; private int operando2 = 0; private String operacion = null; private boolean newDigitBlock = true; bitCoach::Juan Bautista Cascallar Lorenzo
  • 2. //Constructor public Calculadora(){ this.setTitle("Calculadora"); this.setSize(200, 200); this.setLayout(new BorderLayout()); this.addWindowListener(new Escuchador_WindowListener()); //--- Display --- pantalla = new TextField(); pantalla.setText("0"); pantalla.addKeyListener(this); pantalla.setBackground(Color.CYAN); this.add(pantalla,BorderLayout.NORTH); //--- Teclas --- Panel panel01 = new Panel(); panel01.setLayout(new GridLayout(5,3)); tecla = new Button("0"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("1"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("+"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("2"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("3"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("-"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("4"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("5"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("="); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("6"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("7"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("C"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("8"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button("9"); tecla.addActionListener(this); panel01.add(tecla); tecla = new Button(); tecla.setEnabled(false); panel01.add(tecla); this.add(panel01,BorderLayout.CENTER); } //--- Método de la interfaz ActionListener --- @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String teclaPulsada = ((Button)e.getSource()).getLabel(); if(teclaPulsada.equals("C")){ pantalla.setText("0"); operando1 = 0; operando2 = 0; newDigitBlock = true; }else if(teclaPulsada.equals("=")){ operando2 = Integer.parseInt(pantalla.getText()); if(operacion != null){ if(operacion.equals("+")){ pantalla.setText(new Integer(operando1 + operando2).toString()); }else if (operacion.equals("-")){ pantalla.setText(new Integer(operando1 - operando2).toString()); } } newDigitBlock = true; operacion = null; }else if(teclaPulsada.equals("+") || teclaPulsada.equals("-")){ operacion = teclaPulsada; operando1 = Integer.parseInt(pantalla.getText()); newDigitBlock = true; }else{ if(newDigitBlock == true){ pantalla.setText(teclaPulsada); newDigitBlock = false; }else{ pantalla.setText(pantalla.getText() + teclaPulsada); //--- Quitar 0 al principio --- if((pantalla.getText().length() > 1) && (pantalla.getText().charAt(0) == '0')){ pantalla.setText(pantalla.getText().substring(1)); } } } }//Fin function bitCoach::Juan Bautista Cascallar Lorenzo
  • 3. //--- Métodos de la interfaz KeyListener --- @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } } TestCalculadora.java public class TestCalculadora { public static void main(String[] args) { // TODO Auto-generated method stub Calculadora c = new Calculadora(); //c.pack(); c.setVisible(true); } } bitCoach::Juan Bautista Cascallar Lorenzo