Buscar este blog

jueves, 23 de mayo de 2013

TECLADO JAVA ENTORNO GRAFICO

package editor;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class Editor extends JFrame implements MouseListener{
    String firstRow[] = {"~","1","2","3","4","5","6","7","8","9","0","-","+","<<<<<"};
    String secondRow[] = {"Tab","Q","W","E","R","T","Y","U","I","O","P","[","]","\\"};
    String thirdRow[] = {"Caps","A","S","D","F","G","H","J","K","L",":","\"","Enter"};
    String fourthRow[] = {"Shift","Z","X","C","V","B","N","M",",",".","?","   ^" };
    String fifthRow[]={"      " ,"<" ,"\\/",">" };
    String noShift="`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./";
    String specialChars ="~-+[]\\;',.?";
   
    JButton first[];
    JButton second[];
    JButton third[];
    JButton fourth[];
    JButton fifth[];
    Color cc = new JButton().getBackground();
    JTextArea  text;
    Boolean mayusculas = false;

   
    public static void main(String[] args) {
        new Editor().setVisible(true);
    }

    public Editor()
    {
        this.setResizable(false);
         this.getContentPane().setPreferredSize(new Dimension(1000,600));
        this.setLocation(50,50);
        iniciar();
    }

    private void iniciar()
    {

        text = new JTextArea();
        text.setPreferredSize(new Dimension(800,200));
        JLabel info = new JLabel("");
        setLayout(new BorderLayout());
        JPanel jpNorth = new JPanel();
        JPanel jpCenter = new JPanel();
        JPanel jpKeyboard = new JPanel();
        JPanel jpNote = new JPanel();
        add( jpNorth, BorderLayout.NORTH);
        add( jpNote);
        add( jpCenter, BorderLayout.CENTER);
        add(jpKeyboard, BorderLayout.SOUTH);

        jpNorth.setLayout(new BorderLayout());
        jpNorth.add(info, BorderLayout.WEST);
        jpNorth.add(info, BorderLayout.SOUTH);

        jpCenter.setLayout( new BorderLayout());
        jpCenter.add(text, BorderLayout.WEST);
        jpCenter.add(text, BorderLayout.CENTER);

        jpKeyboard.setLayout(new GridLayout(5,1));
        pack();

        first = new JButton[firstRow.length];
        JPanel p = new JPanel(new GridLayout(1, firstRow.length));
        for(int i = 0; i < firstRow.length; ++i)
        {
            JButton b= new JButton(firstRow[i]);
            b.setPreferredSize(new Dimension(100,50));
            first[i] = b;
            first[i].addMouseListener(this);
            p.add(first[i]);
        }
        jpKeyboard.add(p);
        second = new JButton[secondRow.length];
        p = new JPanel(new GridLayout(1, secondRow.length));
        for(int i = 0; i < secondRow.length; ++i)
        {
            second[i] = new JButton(secondRow[i]);
            second[i].addMouseListener(this);
            p.add(second[i]);

        }
        jpKeyboard.add(p);
        third = new JButton[thirdRow.length];
        p = new JPanel(new GridLayout(1, thirdRow.length));
        for(int i = 0; i < thirdRow.length; ++i)
        {
            third[i] = new JButton(thirdRow[i]);
            third[i].addMouseListener(this);
            p.add(third[i]);
        }
        jpKeyboard.add(p);
        fourth = new JButton[fourthRow.length];
        p = new JPanel(new GridLayout(1, fourthRow.length));
        for(int i = 0; i < fourthRow.length; ++i)
        {
            fourth[i] = new JButton(fourthRow[i]);
            fourth[i].addMouseListener(this);
            p.add(fourth[i]);
            if(i==fourthRow.length-2)
                p.add(new JPanel());

        }
        p.add(new JPanel());
        jpKeyboard.add(p);
        fifth = new JButton[fifthRow.length];
        p = new JPanel(new GridLayout(1, fifthRow.length));
        for(int i = 0; i < 1; ++i)
        {
            JPanel  spacePanel = new JPanel();
            p.add(spacePanel);
        }
        for(int i = 0; i < fifthRow.length; ++i)
        {
            if(i==1)
            {
                JButton b = new JButton(fifthRow[i]);
                b.setPreferredSize(new Dimension(400,10));
                b.setBounds(10, 10, 600, 100);
                fifth[i]=b;
                fifth[i].addMouseListener(this);
                p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());p.add(new JPanel());
            }
            else
            {
                fifth[i]=new JButton(fifthRow[i]);
                fifth[i].addMouseListener(this);
            }
            if(i==0)
            {
                   JPanel  spacePanel = new JPanel();
                   p.add(spacePanel);
            }
            p.add(fifth[i]);
        }
        jpKeyboard.add(p);
        }

    @Override
    public void mouseClicked(MouseEvent e) {
            JButton btn = (JButton) e.getSource();
            switch(btn.getText()) {
            case "Enter":
            case "\\/":
                text.setText(""+text.getText()+btn.getText()+"\n");
                break;
               
            case "<<<<<":
               String sCadena = text.getText();
               text.setText(sCadena.substring(0,text.getDocument().getLength()-1));
               break;
            case ">":          
                 text.grabFocus();
                break;
            case "<":
                    text.grabFocus();
                    int i = text.getDocument().getLength();
                    text.setCaretPosition(i - 1);
                    break;
              
            case "Caps":
            case "Shift":
                if (mayusculas){
                    mayusculas = false;
                    btn.setBackground(cc);               
                } else{
                mayusculas = true;
                btn.setBackground(Color.DARK_GRAY);
                }
                break;

               
            default:
                if (!mayusculas) {
                    String texto = (btn.getText()).toLowerCase();
                    text.setText(""+text.getText()+texto);   
                } else {
                    text.setText(""+text.getText()+btn.getText());
                }
            }
           
        }


    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Apéndice de método generado automáticamente
       
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Apéndice de método generado automáticamente
       
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Apéndice de método generado automáticamente
       
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Apéndice de método generado automáticamente
       
    }

    }

miércoles, 22 de mayo de 2013

EJERCICIOS I



select titulo, if(precio>50, `caro`, 'economico') from libros;
select autor, if (count(*)>1, 'mas de 1', '1') from libros group by autor;
select editorial, if (count(*)>4, '5 o mas', 'menos de 5') as cantidad from libros group by editorial order by cantidad;
select sexo count (sexo) if (sexo='f', 'rosas', 'corbata') as 'obsequio' from empleados where month (fecha nacimiento) = 5 group by sexo;
select nombre, fecha ingreso, year(current_date) year (fecha ingreso) as 'años de servicio', if ((year(current-date)-year(fechaingreso)) %10=0, 'si', 'no') as 'Placa' from empleados where month(fechaingreso)=4;
select nombre, sueldo, hijos, if (sueldo basico <=500, sueldobasico+(300*hijos), sueldobasico+(150*hijos)) as total from empleados where hijos > 0;
select dni, vencimiento, current_date as 'Fecha actual', total, if (datediff (current_date, vencimiento)>0, 'si', 'no') as vencida from luz;
select dni, count (*), if (count(*)>1, 'cortar servicio' ' ') as 'servicio' from luz where datediff (current_date, vencimiento)>0 group by documento;
select matricula,horallegada,horasalida, left(timediff(horasalida,horallegada),5) as horasminutos, if (hour(timediff(horasalida,horallegada))>4, hour(timediff(horasalida,horallegada)) div 4,0) as horagratis from vehiculos where horasalida is not null;
SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;
select nombre,promedio, if (promedio>=9,'medalla','') from alumnos
select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas;
select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas;


A. Un profesor guarda los promedios de sus alumnos de un curso en una tabla llamada "alumnos".

create table alumnos(
  expediente char(5) not null,
  nombre varchar(30),
  promedio decimal(4,2)
);

1- Inserta los siguientes registros:
 insert into alumnos values(3456,'Perez Luis',8.5);
 insert into alumnos values(3556,'Garcia Ana',7.0);
 insert into alumnos values(3656,'Ludueña Juan',9.6);
 insert into alumnos values(2756,'Moreno Gabriela',4.8);
 insert into alumnos values(4856,'Morales Hugo',3.2);

2- Si el alumno tiene un promedio superior o igual a 4, muestra un mensaje "aprobado" en caso contrario "suspendido":

SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;

3- Es política del profesor entregar una medalla a quienes tengan un promedio igual o superior a 9. Muestra los nombres y promedios de los alumnos y un mensaje "medalla" a quienes cumplan con ese requisito:


select nombre,promedio, if (promedio>=9,'medalla','') from alumnos

B) Un teatro con varias salas guarda la información de las entradas vendidas en una tabla llamada "entradas".

create table entradas(
  sala tinyint unsigned,
  fecha date,
  hora time,
  capacidad smallint unsigned,
  entradasvendidas smallint unsigned,
  primary key(sala,fecha,hora)
 );

1- Inserta algunos registros:
 insert into entradas values(1,'2006-05-10','20:00',300,50);
 insert into entradas values(1,'2006-05-10','23:00',300,250);
 insert into entradas values(2,'2006-05-10','20:00',400,350);
 insert into entradas values(2,'2006-05-11','20:00',400,380);
 insert into entradas values(2,'2006-05-11','23:00',400,400);
 insert into entradas values(3,'2006-05-12','20:00',350,350);
 insert into entradas values(3,'2006-05-12','22:30',350,100);
 insert into entradas values(4,'2006-05-12','20:00',250,0);

2- Muestra todos los registros y un mensaje si las entradas para una función están agotadas:


select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas

3- Muestra todos los datos de las funciones que tienen vendidas entradas y muestre un mensaje si se vendió más o menos de la mitad de la capacidad de la sala:

select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas



Ejercicio: Tabla vehículos
Un parking guarda cada día los datos de los vehículos que acceden a la playa en una tabla llamada "vehiculos".

create table vehiculos(
  matricula char(6) not null,
  tipo char(4),
  horallegada time not null,
  horasalida time,
  primary key(matricula,horallegada)
 );

1- Inserta algunos registros:
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('ACD123','auto','8:30','9:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('AKL098','auto','8:45','15:10');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('HGF123','auto','9:30','18:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('DRT123','auto','15:30',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('FRT545','moto','19:45',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('GTY154','auto','20:30','21:00');

2- Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más una columna que calcule la cantidad de horas que estuvo cada vehículo en la playa, sin considerar los que aún no se fueron de la playa:


SELECT `matricula`,`horallegada`,`horasalida`,left(timediff(horasalida,horallegada),5) as horasminutos FROM `vehiculos`

3- Se cobra 1 euro por hora. Pero si un vehículo permanece en la playa 4 horas, se le cobran 3 euros, es decir, no se le cobra la cuarta hora; si está 8 horas, se cobran 6 euros, y así sucesivamente. Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más la columna que calcule la cantidad de horas que estuvo cada vehículo en la playa (sin considerar los que aún no se fueron de la playa) y otra columna utilizando "if" que muestre la cantidad de horas gratis:

 select matricula,horallegada,horasalida,
  left(timediff(horasalida,horallegada),5) as horasminutos,
  if (hour(timediff(horasalida,horallegada))>4,
  hour(timediff(horasalida,horallegada)) div 4,0) as horagratis
  from vehiculos
  where horasalida is not null;

jueves, 16 de mayo de 2013

EJERCICIOS JOIN SQL

12. VARIAS TABLAS JOIN
select * from clientes as c join provincias as p on c.codigo=p.codigo;
select * from clientes as c.join provincias as p on codigo=p.codigo order by c.nombre;
12.1 VARIAS TABLAS LEFT JOIN
12.2 VARIAS TABLAS RIGHT JOIN
Tablas socios e inscritos
1. select * from socios as s left join inscritos as i on s.dni=i.dni
2. select * from inscritos as i right join socios as s on s.dni=i.dni;
4. select * from socios as s right join inscritos as i on s.dni=i.dni;
12.6 JOIN GROUP BY Y FUNCIONES DE AGRUPAMIENTO
Tabla clientes y provincias
1.select count (c.nombre), (p.nombre) from clientes as c join provincias as p on c.codigo group by p.nombre;
2.select count (c.nombre), p.nombre from clientes as c left join provincias as p on c. codigo group by p.nombre;;
3.select p.nombre count (c.codigoprovincia) as 'cantidad clientes' from provincias as p join clientes as c on p.codigo =c.codigo provincia group by p.nombre having count (c.codigoprovincia)>=2;
Tabla apartamentos y barrrios
2.select i.edificio, i.domicilio, i.piso, i.numeroapto, i.precio, b.nombre from inmuebles as i cross join barrios as b;
3.select i.edificio, count (i.domicilio), b.nombre from inmuebles as i join barrios as b on i.codigobarrio=b.codigo group by i.edificio;
4.selecti.domicilio, avg(i.precio) b.nombre from inmuebles as i cross join barrios as b on i.codigobarrio=b.codigo group by b.nombre;

miércoles, 1 de mayo de 2013

TEMA 8 Eventos en Java.


Problema 1:
Confeccionar una ventana que muestre un botón. Cuando se presione finalizar la ejecución del
programa Java.
Programa:
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener {
JButton boton1;
public Formulario() {
setLayout(null);
boton1=new JButton("Finalizar");
boton1.setBounds(300,250,100,30);
add(boton1);
boton1.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==boton1) {
System.exit(0);
}
}
public static void main(String[] ar) {
Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,450,350);
formulario1.setVisible(true);
}
}
La mecánica para atrapar el clic del objeto de la clase JButton se hace mediante la implementación de
una interface. Una interface es un protocolo que permite la comunicación entre dos clases. Una
interface contiene uno o más cabecera de métodos, pero no su implementación.
Por ejemplo la interface ActionListener tiene la siguiente estructura:
interface ActionListener {
public void actionPerformed(ActionEvent e) {
}
Luego las clases que implementen la interface ActionListener deberán especificar el algoritmo del
método actionPerformed.
Mediante el concepto de interfaces podemos hacer que desde la clase JButton se puede llamar a un
método que implementamos en nuestra clase.
Para indicar que una clase implementará una interface lo hacemos en la declaración de la clase con la
sintaxis:
public class Formulario extends JFrame implements ActionListener {
Con esto estamos diciendo que nuestra clase implementa la interface ActionListener, luego estamos
obligados a codificar el método actionPerformed.
Definimos un objeto de la clase JButton:
JButton boton1;
En el constructor creamos el objeto de la clase JButton y mediante la llamada del método
addActionListener le pasamos la referencia del objeto de la clase JButton utilizando la palabra clave this
(this almacena la dirección de memoria donde se almacena el objeto de la clase JFrame, luego mediante
dicha dirección podemos llamar al método actionPerformed):
public Formulario() {
setLayout(null);
boton1=new JButton("Finalizar");
boton1.setBounds(300,250,100,30);
add(boton1);
boton1.addActionListener(this);
}
El método actionPerformed (este método de la interface ActionListener debe implementarse
obligatoriamente, en caso de no codificarlo o equivocarnos en su nombre aparecerá un mensaje de
error en tiempo de compilación de nuestro programa.
El método actionPerformed se ejecutará cada vez que hagamos clic sobre el objeto de la clase JButton.
La interface ActionListener y el objeto de la clase ActionEvent que llega como parámetro están definidos
en el paquete:
import java.awt.event.*;
Es decir que cada vez que se presiona el botón desde la clase JButton se llama al método
actionPerformed y recibe como parámetro un objeto de la clase ActionEvent.
En el método actionPerformed mediante el acceso al método getSource() del objeto que llega como
parámetro podemos analizar que botón se presionó:
public void actionPerformed(ActionEvent e) {
if (e.getSource()==boton1) {
System.exit(0);
}
}
Si se presionó el boton1 luego el if se verifica verdadero y por lo tanto llamando al método exit de la
clase System se finaliza la ejecución del programa.
Problema 2:
Confeccionar una ventana que contenga tres objetos de la clase JButton con las etiquetas "1", "2" y "3".
Al presionarse cambiar el título del JFrame indicando cuál botón se presionó.
Programa:
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
private JButton boton1,boton2,boton3;
public Formulario() {
setLayout(null);
boton1=new JButton("1");
boton1.setBounds(10,100,90,30);
add(boton1);
boton1.addActionListener(this);
boton2=new JButton("2");
boton2.setBounds(110,100,90,30);
add(boton2);
boton2.addActionListener(this);
boton3=new JButton("3");
boton3.setBounds(210,100,90,30);
add(boton3);
boton3.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==boton1) {
setTitle("boton 1");
}
if (e.getSource()==boton2) {
setTitle("boton 2");
}
if (e.getSource()==boton3) {
setTitle("boton 3");
}
}
public static void main(String[] ar){
Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,350,200);
formulario1.setVisible(true);
}
}
Debemos declarar 3 objetos de la clase JButton:
private JButton boton1,boton2,boton3;
En el constructor creamos los tres objetos de la clase JButton y los ubicamos dentro del control JFrame
(también llamamos al método addActionListener para enviarle la dirección del objeto de la clase
Formulario):
public Formulario() {
setLayout(null);
boton1=new JButton("1");
boton1.setBounds(10,100,90,30);
add(boton1);
boton1.addActionListener(this);
boton2=new JButton("2");
boton2.setBounds(110,100,90,30);
add(boton2);
boton2.addActionListener(this);
boton3=new JButton("3");
boton3.setBounds(210,100,90,30);
add(boton3);
boton3.addActionListener(this);
}
Cuando se presiona alguno de los tres botones se ejecuta el método actionPerformed y mediante tres if
verificamos cual de los botones se presionó:
public void actionPerformed(ActionEvent e) {
if (e.getSource()==boton1) {
setTitle("boton 1");
}
if (e.getSource()==boton2) {
setTitle("boton 2");
}
if (e.getSource()==boton3) {
setTitle("boton 3");
}
}
Según el botón presionado llamamos al método setTitle que se trata de un método heredado de la clase
JFrame y que tiene por objetivo mostrar un String en el título de la ventana.
Problema propuesto
1. Disponer dos objetos de la clase JButton con las etiquetas: "varón" y "mujer", al presionarse
mostrar en la barra de títulos del JFrame la etiqueta del botón presionado.
package EJERCICIOS1;
import javax.swing.*;
import java.awt.event.*;
public class problema3 extends JFrame implements ActionListener{
private JButton mujer,varon;

public problema3() {
setLayout(null);
mujer=new JButton("mujer");
mujer.setBounds(10,100,90,30);
add(mujer);
mujer.addActionListener(this);
varon=new JButton("varon");
varon.setBounds(110,100,90,30);
add(varon);
varon.addActionListener(this);}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==mujer) {
setTitle("mujer");}
if (e.getSource()==varon) {
setTitle("varon");}}
public static void main(String[] ar){
problema3 formulario1=new problema3();
formulario1.setBounds(0,0,350,200);
formulario1.setVisible(true);
}}

Ejercicios resueltos 2.
Ejercicio 1. Eventos de Ratón (MouseListener)
package EJERCICIOS2;
//Demostración de los eventos de ratón.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ejercicio201 extends JFrame implements MouseListener, MouseMotionListener
{private JLabel barraEstado;
//configurar GUI y registrar manejadores de eventos de ratón
public ejercicio201()
{super( "Demostración de los eventos de ratón" );
barraEstado = new JLabel();
getContentPane().add( barraEstado, BorderLayout.SOUTH);
getContentPane().addMouseListener( this ); // escucha sus propios eventos de ratón
getContentPane().addMouseMotionListener( this ); // y de movimiento de ratón
setSize( 300, 125 );
setVisible( true );}
//Manejadores de eventos de MouseListener
//manejar el evento cuando el botón del ratón se suelta inmediatamente después de oprimir
public void mouseClicked( MouseEvent evento )
{barraEstado.setText( "Se hizo clic en [" + evento.getX() +
", " + evento.getY() + "]" );}
//manejar evento cuando se oprime el botón del ratón
public void mousePressed( MouseEvent evento )
{barraEstado.setText( "Se oprimió en [" + evento.getX() +
", " + evento.getY() + "]" );}
//manejar evento cuando se suelta el ratón después de arrastrar
public void mouseReleased( MouseEvent evento )
{barraEstado.setText( "Se soltó en [" + evento.getX() +
", " + evento.getY() + "]" );}
//manejar el evento cuando el ratón entra al área
public void mouseEntered( MouseEvent evento )
{barraEstado.setText( "Ratón entro en [" + evento.getX() +
", " + evento.getY() + "]" );
getContentPane().setBackground( Color.GREEN );}
//manejar evento cuando el ratón sale del área
public void mouseExited( MouseEvent evento )
{barraEstado.setText( "Ratón fuera de la ventana" );
getContentPane().setBackground( Color.WHITE );}
//Manejadores de eventos de MouseMotionListener
//manejar el evento cuando el usuario arrastra el ratón con el botón oprimido
public void mouseDragged( MouseEvent evento )
{barraEstado.setText( "Se arrastró en [" + evento.getX() +
", " + evento.getY() + "]" );}
//manejar el evento cuando el usuario mueve el ratón
public void mouseMoved( MouseEvent evento )
{barraEstado.setText( "Se movió en [" + evento.getX() +
", " + evento.getY() + "]" );}
public static void main( String args[] )
{JFrame.setDefaultLookAndFeelDecorated(true);
ejercicio201 aplicacion = new ejercicio201();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}} // fin de la clase RastreadorRaton
 Ejercicio 2. Eventos de teclado (KeyListener)
package EJERCICIOS2;
// Demostración de los eventos de pulsación de tecla.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Ejercicio202 extends JFrame implements KeyListener {
private String linea1 = "", linea2 = "", linea3 = "";
private JTextArea areaTexto;
// configurar GUI
public Ejercicio202()
{super( "Demostración de eventos de pulsación de tecla" );
// establecer objeto JTextArea
areaTexto = new JTextArea( 10, 15 );
areaTexto.setText( "Oprima cualquier tecla en el teclado..." );
areaTexto.setEnabled( false );
areaTexto.setDisabledTextColor( Color.blue );
getContentPane().add( areaTexto );
addKeyListener( this ); // permitir al marco procesar eventos de teclas
setSize( 350, 100 );
setVisible( true );
} // fin del constructor de DemoTeclas
// manejar evento de pulsación de cualquier tecla
public void keyPressed( KeyEvent evento )
{linea1 = "Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() );
establecerLineas2y3( evento );}
// manejar evento de liberación de cualquier tecla
public void keyReleased( KeyEvent evento )
{linea1 = "Se soltó tecla: " + evento.getKeyText( evento.getKeyCode() );
establecerLineas2y3( evento );}
// manejar evento de pulsación de una tecla de acción
public void keyTyped( KeyEvent evento )
{linea1 = "Se escribió tecla: " + evento.getKeyChar();
establecerLineas2y3( evento );}
// establecer segunda y tercera líneas de salida
private void establecerLineas2y3( KeyEvent evento )
{linea2 = "Esta tecla " + ( evento.isActionKey() ? "" : "no " ) +
"es una tecla de acción";
String temp = evento.getKeyModifiersText( evento.getModifiers() );
linea3 = "Teclas modificadoras oprimidas: " +
( temp.equals( "" ) ? "ninguna" : temp );
areaTexto.setText( linea1 + "\n" + linea2 + "\n" + linea3 + "\n" );}
public static void main( String args[] )
{JFrame.setDefaultLookAndFeelDecorated(true);
Ejercicio202 aplicacion = new Ejercicio202();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );}
} // fin de la clase DemoTeclas