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