Imágenes Como Botones

.site {
background-color: #a1d87f;
}

@Autor: Prof. Luis Mitre

En Este Ejemplo pondremos imágenes como botones para utilizarlos como Menús

 

Paso 1. Creamos nuestro Proyecto (Solo para el Ejemplo recuerda que el código lo puedes implementar donde tu lo necesites).

Paso 2. Creamos nuestro Paquete (Puedes utilizar cualquier nombre).

Paso 3. Creamos la Clase VentanaBotones, que es la cual contendra los iconos para convertirlos en Menús la cual debe de extiendes de JPanel.

El Código de Esta clase quedaría de la siguiente manera:

import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;

public class VentanaBotones extends JPanel{
	//creamos los botones y en su constructor insertamos la imagen
	public JButton btnVentas=new JButton(new ImageIcon("./imagenes/ventas.png"));
	public JButton btnNuevoUsuario=new JButton(new ImageIcon("./imagenes/usuario.png"));
	public JButton btnAgregar=new JButton(new ImageIcon("./imagenes/agregar.png"));
	public JButton btnInventario=new JButton(new ImageIcon("./imagenes/inventario.png"));
	public JButton btnRegistrar=new JButton(new ImageIcon("./imagenes/registrar.png"));
	public JButton btnConsultar=new JButton(new ImageIcon("./imagenes/consultar.png"));
	
	public VentanaBotones(){
		//establecemos el color que tendra de fondo el panel que en este caso es verde
		Color fondoBoton=new Color(0,255,0);
		//agregamos el color al panel
		setBackground(fondoBoton);
		//estas variables nos ayudaran a dar el tamaño a los botones para que sean uniformes
		int tamanox=100;
		int tamanoy=100;
		//agregamos los tamaños a los botones
		btnAgregar.setSize(tamanox, tamanoy);
		btnConsultar.setSize(tamanox, tamanoy);
		btnInventario.setSize(tamanox, tamanoy);
		btnNuevoUsuario.setSize(tamanox, tamanoy);
		btnRegistrar.setSize(tamanox, tamanoy);
		btnVentas.setSize(tamanox, tamanoy);
		//acada boton lo modificamos
		btnAgregar.setOpaque(true);// esto hace transparente el boton
		btnAgregar.setBorder(null);//con esto quitamos su borde
		btnAgregar.setBackground(fondoBoton);//agregamos el mismo fondo para que no se
											//note donde empieza un boton y termina el otro
		//con la siguiente propiedad agrega un mensaje cuando
		//el cursor del mouse se posiciona encima del boton
		btnAgregar.setToolTipText("Agregar mas Cantidad de Un Producto");
		
		//hacemos exactamente lo mismo para cada boton
		btnConsultar.setOpaque(true);
		btnConsultar.setBorder(null);
		btnConsultar.setBackground(fondoBoton);
		btnConsultar.setToolTipText("Consultar Productos");
		
		btnInventario.setOpaque(true);
		btnInventario.setBorder(null);
		btnInventario.setBackground(fondoBoton);
		btnInventario.setToolTipText("Listado de todos los Productos");
		
		btnNuevoUsuario.setOpaque(true);
		btnNuevoUsuario.setBorder(null);
		btnNuevoUsuario.setBackground(fondoBoton);
		btnNuevoUsuario.setToolTipText("Agregar Nuevo Usuario");
		
		btnRegistrar.setOpaque(true);
		btnRegistrar.setBorder(null);
		btnRegistrar.setBackground(fondoBoton);
		btnRegistrar.setToolTipText("Registrar Nuevo Producto");
		
		btnVentas.setOpaque(true);
		btnVentas.setBorder(null);
		btnVentas.setBackground(fondoBoton);
		btnVentas.setToolTipText("Ventas");
		//asignamos el gestor de posicion que en este caso es por flujo
		setLayout(new FlowLayout());
		//agregamos los botones al panel
		add(btnConsultar);
		add(btnInventario);
		add(btnNuevoUsuario);
		add(btnAgregar);
		add(btnVentas);
		add(btnRegistrar);
	}
}

Nota: las imágenes se deben de poner en una carpeta llamada imágenes dentro del proyecto:

Paso 4. Creamos nuestra clase VentanaPrincipal la cual extiende de un JFrame ya que esta es la que se visualiza y es la que recibe todas las ventanas.

El código de la clase quedaría de la siguiente manera:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


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

public class VentanaPrincipal extends JFrame implements ActionListener{
	//creamos el objeto del panel botones
	VentanaBotones pnlBotones=new VentanaBotones();
	//creamos el panel que recibira todas las ventanas
	JPanel pnlCentral=new JPanel();
	//creamos paneles de las ventanas que mostraremos
	JPanel pnlVentas=new JPanel();
	JPanel pnlNuevo=new JPanel();
	JPanel pnlAgregar=new JPanel();
	JPanel pnlInventario=new JPanel();
	JPanel pnlRegistrar=new JPanel();
	JPanel pnlConsular=new JPanel();
	//creamos etiquetas para poner nombre a los paneles
	JLabel lblVentas=new JLabel("Panel Ventas");
	JLabel lblNuevo=new JLabel("Panel Nuevo");
	JLabel lblAgregar=new JLabel("Panel Agregar");
	JLabel lblInventario=new JLabel("Panel Inventario");
	JLabel lblRegistrar=new JLabel("Panel Registrar");
	JLabel lblConsular=new JLabel("Panel Consultar");
	//creamos el objeto baraja que sera el que nos permita cambiar la ventana que se muestra
	CardLayout baraja=new CardLayout();
	//creamos el tipo de letra para las etiquetas
	Font letraEtiquetas=new Font("Arial",1,20);
	
	//iniciamos nuestro constructor
	public VentanaPrincipal(){
		//agregamos el gestor a la Ventana
		setLayout(new BorderLayout());
		//empesamos a construir todas las ventanas a mostrar
		pnlAgregar.setLayout(new FlowLayout());//agregamos el layout
		pnlAgregar.add(lblAgregar);//agregamos la etiqueta
		pnlAgregar.setBackground(new Color(255,0,0));//agregamos fondo de color
		//hacemos lo mismo con el resto de las ventanas
		pnlConsular.setLayout(new FlowLayout());
		pnlConsular.add(lblConsular);
		pnlConsular.setBackground(new Color(255,255,0));
		pnlInventario.setLayout(new FlowLayout());
		pnlInventario.add(lblInventario);
		pnlInventario.setBackground(new Color(255,0,255));
		pnlNuevo.setLayout(new FlowLayout());
		pnlNuevo.add(lblNuevo);
		pnlNuevo.setBackground(new Color(0,255,0));
		pnlRegistrar.setLayout(new FlowLayout());
		pnlRegistrar.add(lblRegistrar);
		pnlRegistrar.setBackground(new Color(0,0,255));
		pnlVentas.setLayout(new FlowLayout());
		pnlVentas.add(lblVentas);
		pnlVentas.setBackground(new Color(255,255,255));
		
		//agregamos el gestor baraja al panel central
		pnlCentral.setLayout(baraja);
		//agregamos cada panel ventana al central y le pones un nombre a cada ventana
		pnlCentral.add(pnlAgregar,"agregar");
		pnlCentral.add(pnlConsular,"consultar");
		pnlCentral.add(pnlInventario,"inventario");
		pnlCentral.add(pnlNuevo,"nuevo");
		pnlCentral.add(pnlRegistrar,"registrar");
		pnlCentral.add(pnlVentas,"ventas");
		//agregamos el panel botones y el panel central a la ventana principal
		add(pnlBotones,BorderLayout.NORTH);
		add(pnlCentral,BorderLayout.CENTER);
		//establecemos el tamaño de la ventana
		setSize(500, 500);
		//establecemos la accion a realizar cuando se cierre el frame
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//acemos visible la ventana
		setVisible(true);
		//le agregamos a cada uno de los botones el escuchadar de acciones
		pnlBotones.btnAgregar.addActionListener(this);
		pnlBotones.btnConsultar.addActionListener(this);
		pnlBotones.btnInventario.addActionListener(this);
		pnlBotones.btnNuevoUsuario.addActionListener(this);
		pnlBotones.btnRegistrar.addActionListener(this);
		pnlBotones.btnVentas.addActionListener(this);
	}
	
	/**
	 * en este metodo estableces que hara cada boton
	 * que en este caso cada boton invocara a una ventana dentro
	 * de la baraja
	 */
	public void actionPerformed(ActionEvent evento) {
		if(evento.getSource()==pnlBotones.btnAgregar){
			baraja.show(pnlCentral, "agregar");
		}else if(evento.getSource()==pnlBotones.btnConsultar){
			baraja.show(pnlCentral, "consultar");
		}else if(evento.getSource()==pnlBotones.btnInventario){
			baraja.show(pnlCentral, "inventario");
		}else if(evento.getSource()==pnlBotones.btnNuevoUsuario){
			baraja.show(pnlCentral, "nuevo");
		}else if(evento.getSource()==pnlBotones.btnRegistrar){
			baraja.show(pnlCentral, "registrar");
		}else if(evento.getSource()==pnlBotones.btnVentas){
			baraja.show(pnlCentral, "ventas");
		}
		
	}
}

Paso 5. por Ultimo creamos nuestra clase Auxiliar que es la cual ejecuta el programa, quedando de la siguiente manera:

public class Auxiliar {
	public static void main(String[] args) {
		// creamos el objeto de nuestra ventana principal
		VentanaPrincipal objeto = new VentanaPrincipal();
	}
}

Con esto terminamos debería de quedar parecido a la siguiente imagen solo con las imágenes que tu decidas poner.

Con esto tendríamos una ventana con unos iconos como imagen, cabe recalcar que las imágenes que utilices preferentemente sean en formato PNG, y que el tamaño sea aproximadamente de 72×72 Pixeles o dependiendo del tamaño que tu desees.

Espero te sirva………