Está en la página 1de 6

EJERCICIO ILUSTRATIVO DEL USO DE ADMINISTRADORES

DE ESQUEMAS Y DE PANELES

Conceptos Básicos:
 Container (Contenedor)
 Administrador de Esquema: FlowLayout, GridLayout, BorderLayout
 Evento
 Listener (Escucha): ItemListener, ActionListener
 Clase interna
 Panel
 Grupo de botones

Descripción del Proyecto

Nombre: Interfaz12
Clases: VentanaGrafico Define el panel donde muestra una figura según las
opciones seleccionadas.
VentanaPaneles Define la ventana y sus características.
Interfaz12 Ejecuta la aplicación, contiene el método main.

Definición de la clase VentanaGrafico

package interfaz12;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class VentanaGrafico extends JPanel


{
public Color colorSeleccion;
public int formaSeleccion;
public boolean borrar;

public VentanaGrafico()
{
super();
}
public void paint(Graphics t)
{
super.paint(t);

if ( !borrar )
{
t.setColor(colorSeleccion);

switch (formaSeleccion)
{
case 0:
t.fillRect((getWidth() - 300)/2,(getHeight() - 200)/2,300,200);
break;
case 1:
t.fillRoundRect((getWidth() - 300)/2,(getHeight() - 200)/2,300,200,45,45);
break;
case 2:
t.fillOval((getWidth() - 250)/2,(getHeight() - 150)/2,250,150);
break;
case 3:
t.fillOval((getWidth() - 250)/2,(getHeight() - 250)/2,250,250);
break;
}

Definición de la clase VentanaPaneles


package interfaz12;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class VentanaPaneles extends JFrame


{
private JPanel areaControles, selectColor, selectGrafico, selectAccion;
private VentanaGrafico areaDibujo;

private JRadioButton negro, azul, rojo, verde;


private JRadioButton rect, ovalo, circulo, rectRd;
private JButton btn1;
private ButtonGroup grupoColor, grupoFigura;

public VentanaPaneles()
{ // Inicio constructor

super("Uso de Paneles y Administradores de Esquemas");


Container contenedor = getContentPane();

// Asignación del administrador de esquema al contenedor


contenedor.setLayout(new BorderLayout(5,5));

// Definición del panel correspondiente al área de dibujo


areaDibujo = new VentanaGrafico();
areaDibujo.setBorder(BorderFactory.createLineBorder (Color.red, 2));
areaDibujo.setPreferredSize(new Dimension(610, 100));

// Definición del panel de controles


areaControles = new JPanel(new GridLayout(3,1,2,2));

// Definición del panel para la selección del color


selectColor = new JPanel(new GridLayout(4,1,2,2));
selectColor.setBorder(BorderFactory.createLineBorder (Color.blue, 2));

// Definición del panel para la selección del gráfico


selectGrafico = new JPanel(new GridLayout(4,1,2,2));
selectGrafico.setBorder(BorderFactory.createLineBorder (Color.blue, 2));

// Definición del panel para selección de la acción a ejecutar


selectAccion = new JPanel(new FlowLayout());
selectAccion.setBorder(BorderFactory.createLineBorder (Color.blue, 2));

// Establecimiento de los radio buttons para la selección del color


negro = new JRadioButton("Negro", true);
azul = new JRadioButton("Azul", false);
rojo = new JRadioButton("Rojo", false);
verde = new JRadioButton("Verde", false);
grupoColor = new ButtonGroup();
grupoColor.add(negro);
grupoColor.add(azul);
grupoColor.add(rojo);
grupoColor.add(verde);

selectColor.add(negro);
selectColor.add(azul);
selectColor.add(rojo);
selectColor.add(verde);

areaControles.add(selectColor);

// Establecimiento de los radio buttons para la selección del gráfico


rect = new JRadioButton("Rectángulo", false);
rectRd = new JRadioButton("Rect.Redond.", false);
ovalo = new JRadioButton("Ovalo", false);
circulo = new JRadioButton("Círculo", false);
grupoFigura = new ButtonGroup();
grupoFigura.add(rect);
grupoFigura.add(rectRd);
grupoFigura.add(ovalo);
grupoFigura.add(circulo);

selectGrafico.add(rect);
selectGrafico.add(rectRd);
selectGrafico.add(ovalo);
selectGrafico.add(circulo);

areaControles.add(selectGrafico);

// Establecimiento del botón para borrar el área de dibujo


btn1 = new JButton ("Borrar");
btn1.setOpaque(true);
btn1.setBackground(Color.WHITE);
btn1.setForeground(Color.BLUE);
btn1.setPreferredSize(new Dimension(100, 30));
selectAccion.add( btn1 );

areaControles.add(selectAccion);

// Asignación de la ubicación de los paneles principales


contenedor.add(areaDibujo, BorderLayout.WEST);
contenedor.add(areaControles, BorderLayout.EAST);

// Asignación del manejador para las opciones seleccionadas


ManejadorOpciones manejador = new ManejadorOpciones();
rect.addItemListener(manejador);
rectRd.addItemListener(manejador);
ovalo.addItemListener(manejador);
circulo.addItemListener(manejador);
negro.addItemListener(manejador);
azul.addItemListener(manejador);
rojo.addItemListener(manejador);
verde.addItemListener(manejador);

// Asignación del manejador para las acciones a ejecutar


ManejadorBotones manejadorBtn = new ManejadorBotones();
btn1.addActionListener(manejadorBtn);

// Definición del tamaño de la ventana y habilitación de visibilidad


setSize(750,400);
setVisible( true );

} // Fin constructor

// Clase para manejar las opciones seleccionadas


private class ManejadorOpciones implements ItemListener
{
public void itemStateChanged ( ItemEvent evento)
{
if (negro.isSelected())
{ areaDibujo.colorSeleccion = Color.BLACK; }
if (azul.isSelected())
{ areaDibujo.colorSeleccion = Color.BLUE; }
if (rojo.isSelected())
{ areaDibujo.colorSeleccion = Color.RED; }
if (verde.isSelected())
{ areaDibujo.colorSeleccion = Color.GREEN; }

if (rect.isSelected())
{ areaDibujo.formaSeleccion = 0; }
if (rectRd.isSelected())
{ areaDibujo.formaSeleccion = 1; }
if (ovalo.isSelected())
{ areaDibujo.formaSeleccion = 2; }
if (circulo.isSelected())
{ areaDibujo.formaSeleccion = 3; }

areaDibujo.borrar = false;
repaint();

}
}

// Clase para manejar las acciones a ejecutar


private class ManejadorBotones implements ActionListener
{
public void actionPerformed ( ActionEvent e )
{
if (e.getSource() == btn1)
{
areaDibujo.borrar = true;
repaint();
}
}
}

Definición de la clase Interfaz12


package interfaz12;

import javax.swing.JFrame;

public class Interfaz12 {


public static void main(String[] args) {
VentanaPaneles a = new VentanaPaneles();
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

También podría gustarte