Bienvenidos a todos una vez más a un nuevo apartado
del Tutorial Java. Tengo que decir que si me seguís y habéis llegado hasta aquí
deciros que estoy enormemente agradecida y que sois unos valientes porque no es
fácil aprender Java leyendo, leyendo… pero eso sí intento hacerlo lo más
práctico posible para no aburriros. Con todo lo dicho vamos a empezar este
apartado y lo hacemos con las barras de herramientas.
Para la creación de las barras de herramientas se
utiliza la clase JToolBar que tiene una serie de métodos pero
nosotros vamos a utilizar add(Action acción).
Para entenderlo y verlo mejor, como siempre, va a ser con una práctica para ello vamos a reutilizar un código de una práctica que ya hicimos en el apartado Eventos, la práctica la denominamos MultiplesFuentes, esta aplicación consistía en una ventana con tres botones:
Si pulsamos en uno de los botones el marco se rellena del color que indica el botón, por ejemplo, si pulsábamos el botón Amarillo pues el fondo se rellena de color amarillo:
Si pulsamos el botón Azul el color de fondo se rellena
de azul así como el botón rojo el color de fondo se rellena del rojo.
La práctica va a consistir además de rellenar el fondo
del color que seleccionemos según el botón que pulsemos los botones van a estar
dentro de una barra de herramientas.
Si recordáis también está práctica incluía también la
opción de cambiar el color de fondo con una combinación de teclas eso no lo
vamos a utilizar, vamos a ir quitando cosas hasta que el código quede de esta
forma, nos creamos un proyecto al que vamos a llamar AplicacionesGraficas, nos creamos un paquete al que vamos a llamar graficas y dentro de este paquete nos creamos la clase BarHer, cuyo código es el siguiente:
package graficas;
import java.awt.Color;
import java.awt.Frame;
import
java.awt.event.ActionEvent;
import javax.swing.*;
public class BarHer {
public static void main(String[] args) {
MarcoFuentes mimarco=new MarcoFuentes();
mimarco.setVisible(true);
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoFuentes
extends JFrame{
public MarcoFuentes()
{
setTitle("Práctica
MarcoFuentes");
setSize(400, 400);
lamina = new JPanel();
add(lamina);
ActionColor accionAmarillo = new ActionColor("Amarillo", new ImageIcon("src/amarilla.png"), Color.yellow);
ActionColor accionAzul = new ActionColor("Azul", new ImageIcon("src/azul.png"), Color.blue);
ActionColor accionRojo = new ActionColor("Rojo", new ImageIcon("src/roja.png"), Color.red);
}
private class ActionColor
extends AbstractAction
{
public
ActionColor(String nombre, Icon icono, Color color_boton) {
putValue(Action.NAME, nombre);
putValue(Action.SMALL_ICON, icono);
putValue(Action.SHORT_DESCRIPTION, "Rellenar
el fondo de color " + nombre);
putValue("color_de_fondo", color_boton);
}
@Override
public void
actionPerformed(ActionEvent e) {
Color c =
(Color)getValue("color_de_fondo");
lamina.setBackground(c);
}
}
JPanel lamina;
}
Lo que tenemos en el código aparte de la clase principal tenemos la clase MarcoFuentes que hereda de JFrame, el constructor del marco. Tenemos una clase interna y el método actionPerformed. Si probamos:
De momento no tenemos nada, lo primero que va a hacer
es dentro del constructor MarcoFuentes crearnos un menú para
ello instanciamos la clase JMenu que le vamos dar el nombre
de mimenu y le vamos dar el nombre de Colores:
public MarcoFuentes()
{
setTitle("Práctica MarcoFuentes");
setSize(400, 400);
lamina = new JPanel();
add(lamina);
ActionColor accionAmarillo = new ActionColor("Amarillo", new ImageIcon("src/graficas/bola_amarilla.gif"), Color.yellow);
ActionColor accionAzul = new ActionColor("Azul", new ImageIcon("src/graficas/bola_azul.gif"), Color.blue);
ActionColor accionRojo = new ActionColor("Rojo", new ImageIcon("src/graficas/bola_roja.gif"), Color.red);
JMenu mimenu = new JMenu("Colores");
}
Ahora tenemos que incluir a este menú cada una de las
acciones, estas acciones lo que hacían era construir la acción correspondiente
en base a un color, en base a un icono que teníamos en una ruta y en base a un
color:
mimenu.add(accionAmarillo);
mimenu.add(accionAzul);
mimenu.add(accionRojo);
Lo que hemos hecho ha sido crear el menú nos toca
crear la barra de menús, instanciamos la clase JMenuBar a la
que voy a llamar barramenu y vamos a incluir este menú a la
barra.
JMenuBar barramenu = new JMenuBar();
barramenu.add(mimenu);
Tenemos que indicar en el marco que incluya esta barra
de menús y lo hacemos con el método setJMenuBar:
setJMenuBar(barramenu);
Probamos:
Vemos que el menú está agregado si pulsamos en alguno de los colores vemos que se rellena el fondo del marco del color que hayamos seleccionado:
Una vez creado la barra de menú, justo debajo nos
vamos a crear la barra de herramientas, instanciamos la clase JToolBar a
la que voy a llamar barraher y le vamos a añadir las tres
acciones de los colores:
JToolBar barraher=new JToolBar();
barraher.add(accionAmarillo);
barraher.add(accionAzul);
barraher.add(accionRojo);
Vamos a ubicar la barra en la parte norte porque
queremos que se arrastre:
add(barraher, BorderLayout.NORTH);
Probamos:
Vemos que tenemos la barra de menús y debajo la barra de herramientas, si seleccionamos un color tanto de la barra de menús como de la barra de herramientas nuestro marco se rellena de fondo del color seleccionado. También podemos comprobar que la barra de herramientas se desplaza:
Vamos a incluir otro botón que lo que va a hacer es
cerrar la aplicación igual que si pulsáramos el botón cerrar de la barra de
título.
Lo primero que tenemos que hacer es establecer la
acción del botón como va a tener un comportamiento diferente a los demás
botones vamos instanciar su propia clase abstracta:
Action accionSalir = new AbstractAction("Salir", new ImageIcon("src/graficas/cerrar.gif")) {
};
Sin embargo, nos da un error porque tenemos que
implementar el método actionPerformed y le añadimos dentro de
este método System.exit(0); que se utiliza para salir de las
aplicaciones gráficas:
Action accionSalir = new AbstractAction("Salir", new ImageIcon("src/graficas/cerrar.gif")) {
@Override
public void
actionPerformed(ActionEvent e) {
System.exit(0);
}
};
Vamos añadir a la barra de herramientas un separador y
el botón de salir:
barraher.addSeparator();
barraher.add(accionSalir);
Probamos de nuevo:
Vemos que hay un separador entre los botones de
colores y el botón de Cerrar si
pulsamos el botón de Cerrar la
aplicación se cierra.
Con esto tendríamos nuestra primera aplicación con una
barra de herramientas. El código completo de la práctica:
package graficas;
import
java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import
java.awt.event.ActionEvent;
import javax.swing.*;
public class BarHer {
public static void main(String[] args) {
MarcoFuentes mimarco=new MarcoFuentes();
mimarco.setVisible(true);
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoFuentes
extends JFrame{
public MarcoFuentes()
{
setTitle("Práctica
MarcoFuentes");
setSize(400, 400);
lamina = new JPanel();
add(lamina);
ActionColor accionAmarillo = new ActionColor("Amarillo", new ImageIcon("src/graficas/bola_amarilla.gif"), Color.yellow);
ActionColor accionAzul = new ActionColor("Azul", new ImageIcon("src/graficas/bola_azul.gif"), Color.blue);
ActionColor accionRojo = new ActionColor("Rojo", new ImageIcon("src/graficas/bola_roja.gif"), Color.red);
Action accionSalir = new AbstractAction("Salir", new ImageIcon("src/graficas/cerrar.gif")) {
@Override
public void
actionPerformed(ActionEvent e) {
System.exit(0);
}
};
JMenu mimenu = new JMenu("Colores");
mimenu.add(accionAmarillo);
mimenu.add(accionAzul);
mimenu.add(accionRojo);
JMenuBar barramenu = new JMenuBar();
barramenu.add(mimenu);
setJMenuBar(barramenu);
//Construcción de
la barra de herramientas
JToolBar barraher=new JToolBar();
barraher.add(accionAmarillo);
barraher.add(accionAzul);
barraher.add(accionRojo);
barraher.addSeparator();
barraher.add(accionSalir);
add(barraher, BorderLayout.NORTH);
}
private class ActionColor
extends AbstractAction
{
public
ActionColor(String nombre, Icon icono, Color color_boton) {
putValue(Action.NAME, nombre);
putValue(Action.SMALL_ICON, icono);
putValue(Action.SHORT_DESCRIPTION, "Rellenar
el fondo de color " + nombre);
putValue("color_de_fondo", color_boton);
}
@Override
public void
actionPerformed(ActionEvent e) {
Color c =
(Color)getValue("color_de_fondo");
lamina.setBackground(c);
}
}
JPanel lamina;
}
En el siguiente post seguiremos con
las barras de herramientas, cualquier duda o sugerencia podéis hacerlo a través
de los comentarios del blog. Hasta pronto!
7.15 ATAJOS DE TECLADO <<
>> 8.2 BARRAS DE HERRAMIENTAS II
No hay comentarios:
Publicar un comentario