8.2 BARRA DE HERRAMIENTAS II

 

Hola a todos ¿qué tal? Para este post vamos a utilizar la aplicación del procesador de texto que realizamos en el apartado Componentes Swing, era un procesador muy básico:



Contiene tres menús, cada menú contiene a su vez una serie de submenús, para el menú Fuente, Arial, Verdana y Courier, para el menú Estilo los submenús Negrita y Cursiva y para el menú Tamaño varios tamaños…

Lo que vamos a hacer es crear una barra de herramientas en la parte este derecha donde colocaremos en principio unos submenús como la Negrita y Cursiva:



El código completo de este procesador de textos es el siguiente:

package prtxt;

 

import java.awt.BorderLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JTextPane;

import javax.swing.text.StyledEditorKit;

 

public class Procesador {

 

      public static void main(String[] args) {

           

            MenuProcesador mimenu = new MenuProcesador();

           

            mimenu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

      }

 

}

class MenuProcesador extends JFrame {

     

      public MenuProcesador() {

           

            setBounds(500,300,550,400);

           

            LaminaProcesador milamina = new LaminaProcesador();

           

            add(milamina);

           

            setVisible(true);

      }

     

}

class LaminaProcesador extends JPanel{

     

      public LaminaProcesador() {

           

            setLayout(new BorderLayout());//Establecemos la distribución

           

            JPanel LaminaMenu  = new JPanel(); //Creación de una segunda lámina. Estará en la parte superior dentro de la lámina principal

           

            JMenuBar mibarra = new JMenuBar(); //La barra de menús, donde van a estar los menús

           

            //Creación de los menús

            fuente = new JMenu("Fuente");

           

            estilo = new JMenu("Estilo");

           

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

           

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

           

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

           

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

           

            ConfiguraMenu("Negrita", "estilo", "", Font.BOLD,1);

           

            ConfiguraMenu("Cursiva", "estilo", "", Font.ITALIC,1);

           

            ConfiguraMenu("12", "tamano", "", 1,12);

           

            ConfiguraMenu("16", "tamano", "", 1,16);

           

            ConfiguraMenu("20", "tamano", "", 1,20);

           

            ConfiguraMenu("24", "tamano", "", 1,24);

           

            //Agregamos los menús a la barra de menús

            mibarra.add(fuente);

           

            mibarra.add(estilo);

           

            mibarra.add(tamano);

           

            LaminaMenu.add(mibarra); //Añadimos la barra de menús a la lámina secundaria

           

            add(LaminaMenu, BorderLayout.NORTH); //Para que la segunda lámina con su correspondiente barra de menús aparezca en la parte superior de la lámina principal

           

            miarea = new JTextPane(); //Instanciamos el área de texto

           

            add(miarea, BorderLayout.CENTER); //Ubicamos el área de texto en la parte central de la lámina principal

           

      }

     

      public void ConfiguraMenu (String rotulo, String menu, String tipo_letra, int estilos, int tam) {

           

            JMenuItem submenus = new JMenuItem(rotulo);

           

            if(menu=="fuente") {

                 

                  fuente.add(submenus);

                 

                  if(tipo_letra=="Arial") {

                       

                        submenus.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Arial"));

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

                       

                        submenus.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Courier"));

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

                       

                        submenus.addActionListener(new StyledEditorKit.FontFamilyAction("cambia_letra", "Verdana"));

                  }

            }else if(menu=="estilo") {

                 

                  estilo.add(submenus);

                 

                  if(estilos==Font.BOLD) {

                       

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

                  }else if (estilos==Font.ITALIC) {

                       

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

                  }

            }else if(menu=="tamano") {

                 

                  tamano.add(submenus);

                 

                  submenus.addActionListener(new StyledEditorKit.FontSizeAction("cambia_tamaño", tam));

            }

           

           

           

      }

     

 

     

 

      JTextPane miarea; //Objeto del área de texto

     

      JMenu fuente, estilo, tamano; //creamos los menús

     

      Font letras;

}

Lo primero que vamos a hacer es crearnos la barra de herramientas, nos colocamos dentro del constructor de la lámina LaminaProcesador() y al final, antes de la llave de cierre nos creamos la barra de herramientas:

JToolBar barra = new JToolBar();

La clase JToolBar tiene el método add que permite ir añadiendo elementos a la barra de herramientas, este tipo de elementos tienen que ser botones, si vais a la API de Java para verlo con más claridad veréis que este método agrega a la barra de herramientas botones, lo que hace el método es devolver un dato de tipo JButton.

Sabiendo esto volvemos al código y tenemos que crearnos los botones, un botón para la Negrita y otro botón para la Cursiva, además estos botones van a estar compuestos por imágenes: 




Estás imágenes van a estar almacenadas en el siguiente directorio ProcesadorTexto\src\prtxt que es donde tenemos creado nuestro archivo Java del procesador de texto.

A continuación de la instanciación de la barra de tareas nos creamos el primer botón que será el de la negrita, después lo añadimos a la barra de herramientas con el método add y le tenemos que indicar dónde va a estar situada esta barra de herramientas que va a estar situada en la lámina inferior en la zona oeste:

            JButton NegritaBarra = new JButton(new ImageIcon("src/prtxt/negrita.gif "));

           

            barra.add(NegritaBarra);

           

            add(barra, BorderLayout.WEST);

Probamos:



Vemos como se ha añadido el botón de la Negrita en la barra de herramientas. Vamos a crear  el botón de la Cursiva y añadirlo a la barra de herramientas:

            JButton NegritaBarra = new JButton(new ImageIcon("src/prtxt/negrita.gif "));

           

            barra.add(NegritaBarra);

           

            JButton CursivaBarra = new JButton(new ImageIcon("src/prtxt/cursiva.gif "));

           

            barra.add(CursivaBarra);

           

            add(barra, BorderLayout.WEST);

Probamos de nuevo:



Aquí hay que tener en cuenta que cuando añadimos elementos a la barra de herramientas nos lo sitúa uno al lado del otro de forma horizontal.

Para cambiar la disposición de los elementos y que nos lo coloque uno debajo de otro hay un método dentro de la clase JToolBar llamado setOrientation() este método pide un argumento de tipo entero que hace referencia a si lo quieres horizontal o vertical, si le ponemos un 0 nos coloca los elementos en horizontal, si le pones un 1 te los coloca en vertical. Por lo que antes de añadir la barra de herramientas a la lámina indicamos la orientación que queremos que tengan los elementos:

barra.setOrientation(1);

Si probamos ahora:



Una vez hecho esto hay de darle funcionalidad a estos botones, para ello vamos a utilizar la clase StyledEditorKit() ante de agregar estos botones a la barra de herramientas, justo después de haberlos instanciados vamos a indicar que estos botones tienen que estar a la escucha del evento clic agregando el método actionListener():

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

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

Podemos añadir un tercer botón que sea el de Subrayar, creamos el botón, le aplicamos funcionalidad mediante StyledEditorKit() y lo agregamos a la barra de herramientas:

            JButton SubrayarBarra = new JButton(new ImageIcon("src/prtxt/subrayar.jpg "));

           

            SubrayarBarra.addActionListener(new StyledEditorKit.UnderlineAction());

           

            barra.add(SubrayarBarra);

Probamos, escribimos un texto y le damos un formato de negrita y subrayado:



Vamos añadir tres botones más para cambiar el color del texto, por lo que creamos los botones:

            JButton AmarilloBarra = new JButton(new ImageIcon("src/prtxt/amarilla.png "));

           

            JButton RojoBarra = new JButton(new ImageIcon("src/prtxt/roja.png "));

           

            JButton AzulBarra = new JButton(new ImageIcon("src/prtxt/azul.png "));

Añadimos los botones a la barra de herramientas:

            barra.add(AmarilloBarra);

           

            barra.add(RojoBarra);

           

            barra.add(AzulBarra);

Damos funcionalidad a los botones mediante el método StyledEditorKit():

            AmarilloBarra.addActionListener(new StyledEditorKit.ForegroundAction("Pon amarillo", Color.YELLOW));

           

            RojoBarra.addActionListener(new StyledEditorKit.ForegroundAction("Pon rojo", Color.RED));

           

            AzulBarra.addActionListener(new StyledEditorKit.ForegroundAction("Pon azul", Color.BLUE));

Para el método utilizamos el constructor ForegroundAction que nos pinta el texto de color hay que pasarle dos parámetros uno de tipo String, da igual lo que pongamos, una frase, luego el segundo parámetro utilizamos la función Color con la constante de clase de cada color.

Probamos la aplicación escribimos una frase, seleccionamos un trozo de ella y la pintamos de color rojo:



Vemos que nuestra aplicación funciona correctamente.

Añadimos otros cuatro botones para que nos alinee el texto: izquierda, derecha, centrada y justificada. Por lo que creamos los botones:

JButton IzquierdaBarra = new JButton(new ImageIcon("src/prtxt/izquierda.png "));

           

            JButton DerechaBarra = new JButton(new ImageIcon("src/prtxt/derecha.png "));

 

            JButton CentradaBarra = new JButton(new ImageIcon("src/prtxt/centrado.png "));

 

            JButton JustificadoBarra = new JButton(new ImageIcon("src/prtxt/justificado.png "));

Añadimos los botones a la barra de herramientas:

            barra.add(IzquierdaBarra);

           

            barra.add(DerechaBarra);

           

            barra.add(CentradaBarra);

           

            barra.add(JustificadoBarra);

Damos funcionalidad a los botones:

            IzquierdaBarra.addActionListener(new StyledEditorKit.AlignmentAction("Pon izquierda", 0));

           

            DerechaBarra.addActionListener(new StyledEditorKit.AlignmentAction("Pon derecha", 2));

           

            CentradaBarra.addActionListener(new StyledEditorKit.AlignmentAction("Pon centrado", 1));

           

            JustificadoBarra.addActionListener(new StyledEditorKit.AlignmentAction("Pon justificado", 3));

Utilizamos el constructor AlignmentAction que nos pide dos parámetros, el primero es de tipo String una frase la que queramos, el segundo parámetro es un valor de tipo entero que hace referencia si es izquierda, derecha… por ejemplo, el 2 hace referencia a la alineación derecha, el 1 hace referencia a la alineación centrada.

Probamos, tal y como tenemos el tamaño de la ventana no se muestran todos los botones de la barra de herramientas podemos modificar la ventana en el código o hacerla un poco más grande mientras se está ejecutando:



Hemos escrito una frase, la seleccionamos y le damos una alineación derecha podemos probar los otros botones para comprobar que la aplicación funciona correctamente.

Con cualquier duda podéis escribirme a amizba@gmail.com o hacerlo a través de los comentarios del blog espero que entre todos nos podamos ayudar. Os espero en el próximo, sed buenos y hasta pronto!

8.1 BARRA DE HERRAMIENTAS I << >> 8.3.1 Disposiciónen caja



No hay comentarios:

Publicar un comentario