7.15 ATAJOS DE TECLADO

 

Llegamos al último post del apartado Componentes Swing, espero que os haya sido de gran ayuda, ya sabéis que ante cualquier duda o sugerencias lo podéis hacer a través de los comentarios del blog o enviándome un correo a amizba@gmail.com

En este último post del bloque de los Componentes Swing vamos a ver los atajos de teclado. Por ejemplo, en Word cuando pulsamos la tecla Ctrl+C estamos ejecutando el comando copiar, si pulsamos Ctrl+V estamos ejecutando pegar… así como otros muchos.

Para utilizar los atajos de teclado se utiliza un método que está dentro de la clase JMenuItem llamado setAccelerator(KeyStroke obj). Es recomendable ir a la API de Java para conocer un poco más este método y mientras realizamos la práctica verlo más claro.

Vamos a utilizar un ejemplo que ya hemos utilizado en apartados anteriores, es el siguiente:

package swing;

 

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.*;

import javax.swing.text.StyledEditorKit;

 

public class MenuCheckBox {

 

       public static void main(String[] args) {

            

             MarcoMenuCheck mimarco = new MarcoMenuCheck();

            

             mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

       }

 

}

class MarcoMenuCheck extends JFrame {

      

       public MarcoMenuCheck(){

            

             setVisible(true);

            

             setBounds(550, 300, 550, 400);

            

             LaminaMenuCheck milamina = new LaminaMenuCheck();

            

             add(milamina);

 

            

       }

}

class LaminaMenuCheck extends JPanel {

        

        public LaminaMenuCheck() {

              

              setLayout(new BorderLayout());

              

              JPanel laminamenu = new JPanel();

              

              //-------------MENÚS--------------------

              

              JMenuBar barra = new JMenuBar();

              

              fuente = new JMenu("Fuente");

              

              estilo = new JMenu("Estilo");

              

              tamaño = new JMenu("Tamaño");

              

              //--------Tipo letra--------------------

              

              ConfiguraMenu("Arial""fuente""Arial", 9, 10, "");

              

              ConfiguraMenu("Courier""fuente""Courier", 9, 10, "");

              

              ConfiguraMenu("Verdana""fuente""Verdana", 9, 10, "");

              

              //--------Formato-------------------

              

              JCheckBoxMenuItem negrita = new JCheckBoxMenuItem("Negrita"new ImageIcon("src/graficos/negrita.gif"));

              

              JCheckBoxMenuItem cursiva = new JCheckBoxMenuItem("Cursiva"new ImageIcon("src/graficos/cursiva.gif"));

              

              negrita.addActionListener(new StyledEditorKit.BoldAction());

              

              cursiva.addActionListener(new StyledEditorKit.ItalicAction());

 

              estilo.add(negrita);

              

              estilo.add(cursiva);

 

              //--------Tamaño letra-----------------

              

              ButtonGroup tamaño_letra = new ButtonGroup();

              

              JRadioButtonMenuItem doce = new JRadioButtonMenuItem("12");

              

              JRadioButtonMenuItem dieciseis = new JRadioButtonMenuItem("16");

              

              JRadioButtonMenuItem veinte = new JRadioButtonMenuItem("20");

              

              JRadioButtonMenuItem veinticuatro = new JRadioButtonMenuItem("24");

              

              tamaño_letra.add(doce);

              

              tamaño_letra.add(dieciseis);

              

              tamaño_letra.add(veinte);

              

              tamaño_letra.add(veinticuatro);

              

              doce.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", 12));

              

              dieciseis.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", 16));

              

              veinte.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", 20));

              

              veinticuatro.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", 24));

              

              tamaño.add(doce);

              

              tamaño.add(dieciseis);

              

              tamaño.add(veinte);

              

              tamaño.add(veinticuatro);

 

 

              barra.add(fuente);

              

              barra.add(estilo);

              

              barra.add(tamaño);

              

              laminamenu.add(barra);

              

              add(laminamenu, BorderLayout.NORTH);

              

              area = new JTextPane();

              

              add(area, BorderLayout.CENTER);

 

        }

 

        public void ConfiguraMenu(String rotulo, String menu, String tipoletraint estilosint tam, String ruta_icono) {

              JMenuItem elementoMenu = new JMenuItem(rotulonew ImageIcon(ruta_icono));

              

              if(menu=="fuente") {

                     

                     fuente.add(elementoMenu);

                     

                     if(tipoletra=="Arial") {

                          

                            elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra""Arial"));

                            

                     }else if(tipoletra=="Courier") {

                            elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra""Courier"));

 

                            

                     }else if(tipoletra=="Verdana") {

                            

                            elementoMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra""Verdana"));

 

                     }

                     

                   

                     }

              

              }

        

        JTextPane area;

        

        JMenu fuenteestilotamaño;

      

}

Es un pedazo código que si lo ejecutamos y pulsamos, por ejemplo, sobre el menú Tamaño:



Tiene un submenú que contiene cada uno de ellos un radiobutton, de forma que si escribimos en el área de texto y seleccionamos parte del texto dependiendo del tamaño que seleccionemos nos cambia el tamaño del texto.

Este ejemplo es el que utilizamos para añadir los radiobutton y los checkbox a los submenús, podéis comprobar su funcionamiento para ver que es una aplicación que en principio está finalizada.

Lo que queremos es añadir una combinación de teclas cuando queramos que el tamaño del texto sea 24, queremos que el atajo de teclado sea al pulsar Ctrl+D, voy a escribir primero la línea de código y después lo explico:

veinticuatro.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", 24));

              

              veinticuatro.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK));

              

              tamaño.add(doce);

Utilizamos el método setAcceleratorKeyStroke es una acción que se hace mediante el teclado, con KeyEvent le pasamos mediante código la letra D y el según parámetro es la tecla ctrl.

De forma que si ahora escribimos en el área de texto, seleccionamos el texto que queremos cambiar de tamaño, pulsamos las teclas Ctrl+D vemos que ha cambiado el tamaño a 24.

También lo podemos hacer con la letra negrita y cursiva, de la siguiente forma:

              negrita.addActionListener(new StyledEditorKit.BoldAction());

              

              cursiva.addActionListener(new StyledEditorKit.ItalicAction());

              

              negrita.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));

              

              cursiva.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_DOWN_MASK));

Si probamos de nuevo, escribimos en el área de texto, seleccionamos texto y pulsamos las teclas Ctrl+N nos convierte el texto en negrita, así como, al pulsar Ctrl+I nos convierte el texto en cursiva.

Pues hasta aquí el bloque dedicado a los Componentes Swing. Muchas gracias por seguir mi blog, por estar ahí… os espero en el próximo apartado dedicado a las Aplicaciones gráficas. Un abrazo!

7.14 MENÚS EMERGENTES << >> 8.1BARRAS DE HERRAMIENTAS I



No hay comentarios:

Publicar un comentario