Programa que Utiliza diferentes sistemas de ordenamiento de componentes y realiza operaciones de figuras geométricas..
Paso 1: Creamos un nuevo Proyecto Java dando click en el Menu FILE y eligiendo NEW y por ultimo JAVA PROYECT:
Paso 2: Creamos un Nuevo Paquete seleccionando el proyecto creado, seleccionamos el menu File-New-Package:
Paso 3: Creamos la Clase PanelCirculo en el paquete creado en el paso anterior y Heredamos de JPanel para que se convierta en un contenedor, quedando de la Siguiente Manera:
import javax.swing.JPanel;
/**
*
* @author LuisMitre
*
*/
public class PanelCirculo extends JPanel {
}
Paso 4: Creamos los Objetos que se Necesitaran para Armar la Ventana:
public JLabel lbltitulo = new JLabel("Circulo");
public JLabel lblArea = new JLabel("Area");
public JLabel lblPerimetro = new JLabel("Perimetro");
public JLabel lblVolumen = new JLabel("Volumen");
public JLabel lblRadioVol = new JLabel("Radio");
public JLabel lblRadioPer = new JLabel("Radio");
public JLabel lblRadioArea = new JLabel("Radio");
public JLabel lblAlturaVol = new JLabel("Altura");
public JLabel lblResulArea = new JLabel("Area=");
public JLabel lblResulPer = new JLabel("Perimetro=");
public JLabel lblResulVol = new JLabel("Volumen=");
public JButton btnArea = new JButton("Area");
public JButton btnPerimetro = new JButton("Perimetro");
public JButton btnVolumen = new JButton("Volumen");
public JTextField txtRadioArea = new JTextField();
public JTextField txtRadioPer = new JTextField();
public JTextField txtRadioVol = new JTextField();
public JTextField txtAlturaVol = new JTextField();
Paso 5: Creamos un Constructor con un Parámetro del tipo String para recibir el Titulo de la Ventana..
public PanelCirculo(String titulo) {
}
Paso 6: Le Asignamos a nuestra ventana es sistema de Posiciones «Layout» que utilizaremos, en este caso usaremos coordenadas por consecuente mandamos llamar al método y le decimos Null. Cabe mencionar que no se pone el nombre de la ventana ya que la clase es el contenedor..
public PanelCirculo(String titulo) {
setLayout(null);
}
Paso 7: La Asignamos un color de fondo a la ventana, utilizando la Clase Color y código RGB con el siguiente metodo:
setBackground(new Color(255,0,0));
Paso 8: Le asignamos El Parámetro que recibimos en el constructor a la Etiqueta lblTitulo y le asignamos coordenadas y le Cambiamos el tamaño de letra.
Nota: Usamos el Metodo setBounds(x,y,Ancho,Alto)
lbltitulo.setText(titulo);
lbltitulo.setBounds(200, 10, 200, 60);
lbltitulo.setFont(new Font("Arial", 1,35));
Paso 9: Le Asignamos coordenadas al resto de los componentes, y a las etiquetas les cambiaremos los tamaños de letra.
lblArea.setBounds(60, 80, 100, 30);
lblPerimetro.setBounds(260, 80, 100, 30);
lblVolumen.setBounds(460, 80, 100, 30);
lblRadioArea.setBounds(15, 130, 100, 30);
txtRadioArea.setBounds(65, 130, 100, 30);
lblRadioPer.setBounds(215, 130, 100, 30);
txtRadioPer.setBounds(265, 130, 100, 30);
lblRadioVol.setBounds(405, 130, 100, 30);
txtRadioVol.setBounds(465, 130, 100, 30);
lblAlturaVol.setBounds(405, 170, 100, 30);
txtAlturaVol.setBounds(465, 170, 100, 30);
btnArea.setBounds(50, 210, 100, 30);
btnPerimetro.setBounds(250, 210, 100, 30);
btnVolumen.setBounds(450, 210, 100, 30);
lblResulArea.setBounds(0, 250, 200, 60);
lblResulArea.setFont(new Font("Arial",1,20));
lblResulPer.setBounds(200, 250, 200, 60);
lblResulPer.setFont(new Font("Arial",1,20));
lblResulVol.setBounds(400, 250, 200, 60);
lblResulVol.setFont(new Font("Arial",1,20));
Paso 10: Agregamos Todos los Componentes a la Ventana a través del método add().
Nota: No se pone le nombre de la ventana en el método add() por que la clase nuestro contenedor
add(lbltitulo); add(lblArea); add(lblPerimetro); add(lblVolumen); add(lblRadioArea); add(lblRadioPer); add(lblRadioVol); add(lblAlturaVol); add(txtRadioArea); add(txtRadioPer); add(txtRadioVol); add(txtAlturaVol); add(btnArea); add(btnPerimetro); add(btnVolumen); add(lblResulArea); add(lblResulPer); add(lblResulVol);
Paso 11: Terminamos de crear nuestro panelCirculo, Ahora procedemos a Copiar esta Clase, Oprimiendo clic Derecho en la clase PanelCirculo y Clic Derecho Pegar en el Paquete, nos solicitara que pongamos el nombre de la clase y ponemos PanelCuadrado.
Paso 12: Cambiamos los nombres de los componentes de la nueva clase remplazando solamente los componentes de Radio por Lado.
PanelCuadrado
/**
*
* @author LuisMitre
*
*/
public class PanelCuadrado extends JPanel {
public JLabel lbltitulo = new JLabel("Circulo");
public JLabel lblArea = new JLabel("Area");
public JLabel lblPerimetro = new JLabel("Perimetro");
public JLabel lblVolumen = new JLabel("Volumen");
public JLabel lblLadoVol = new JLabel("Lado");
public JLabel lblLadoPer = new JLabel("Lado");
public JLabel lblLadoArea = new JLabel("Lado");
public JLabel lblAlturaVol = new JLabel("Altura");
public JLabel lblResulArea = new JLabel("Area=");
public JLabel lblResulPer = new JLabel("Perimetro=");
public JLabel lblResulVol = new JLabel("Volumen=");
public JButton btnArea = new JButton("Area");
public JButton btnPerimetro = new JButton("Perimetro");
public JButton btnVolumen = new JButton("Volumen");
public JTextField txtLadoArea = new JTextField();
public JTextField txtLadoPer = new JTextField();
public JTextField txtLadoVol = new JTextField();
public JTextField txtAlturaVol = new JTextField();
public PanelCuadrado(String titulo) {
setLayout(null);
setBackground(new Color(0,255,0));
lbltitulo.setText(titulo);
lbltitulo.setBounds(200, 10, 200, 60);
lbltitulo.setFont(new Font("Arial", 1,35));
lblArea.setBounds(60, 80, 100, 30);
lblPerimetro.setBounds(260, 80, 100, 30);
lblVolumen.setBounds(460, 80, 100, 30);
lblLadoArea.setBounds(15, 130, 100, 30);
txtLadoArea.setBounds(65, 130, 100, 30);
lblLadoPer.setBounds(215, 130, 100, 30);
txtLadoPer.setBounds(265, 130, 100, 30);
lblLadoVol.setBounds(405, 130, 100, 30);
txtLadoVol.setBounds(465, 130, 100, 30);
lblAlturaVol.setBounds(405, 170, 100, 30);
txtAlturaVol.setBounds(465, 170, 100, 30);
btnArea.setBounds(50, 210, 100, 30);
btnPerimetro.setBounds(250, 210, 100, 30);
btnVolumen.setBounds(450, 210, 100, 30);
lblResulArea.setBounds(0, 250, 200, 60);
lblResulArea.setFont(new Font("Arial",1,20));
lblResulPer.setBounds(200, 250, 200, 60);
lblResulPer.setFont(new Font("Arial",1,20));
lblResulVol.setBounds(400, 250, 200, 60);
lblResulVol.setFont(new Font("Arial",1,20));
add(lbltitulo);
add(lblArea);
add(lblPerimetro);
add(lblVolumen);
add(lblLadoArea);
add(lblLadoPer);
add(lblLadoVol);
add(lblAlturaVol);
add(txtLadoArea);
add(txtLadoPer);
add(txtLadoVol);
add(txtAlturaVol);
add(btnArea);
add(btnPerimetro);
add(btnVolumen);
add(lblResulArea);
add(lblResulPer);
add(lblResulVol);
}
}
Paso 13: Realizamos el mismo Procedimiento para las demás clases de PanelTriangulo y PanelRectangulo, agregando los componentes faltantes para estas Figuras..
PanelRectangulo
/**
*
* @author LuisMitre
*
*/
public class PanelRectangulo extends JPanel {
public JLabel lbltitulo = new JLabel("Circulo");
public JLabel lblArea = new JLabel("Area");
public JLabel lblPerimetro = new JLabel("Perimetro");
public JLabel lblVolumen = new JLabel("Volumen");
public JLabel lblBaseVol = new JLabel("Base");
public JLabel lblBasePer = new JLabel("Base");
public JLabel lblBaseArea = new JLabel("Base");
public JLabel lblAlturaVol = new JLabel("Altura");
public JLabel lblResulArea = new JLabel("Area=");
public JLabel lblResulPer = new JLabel("Perimetro=");
public JLabel lblResulVol = new JLabel("Volumen=");
public JButton btnArea = new JButton("Area");
public JButton btnPerimetro = new JButton("Perimetro");
public JButton btnVolumen = new JButton("Volumen");
public JTextField txtBaseArea = new JTextField();
public JTextField txtBasePer = new JTextField();
public JTextField txtBaseVol = new JTextField();
public JTextField txtAlturaVol = new JTextField();
public JLabel lblAlturaArea=new JLabel("Altura");
public JLabel lblAlturaPeri=new JLabel("Altura");
public JLabel lblAnchuraVol=new JLabel("Anchura");
public JTextField txtAlturaArea=new JTextField();
public JTextField txtAlturaPeri=new JTextField();
public JTextField txtAnchuraVol=new JTextField();
public PanelRectangulo(String titulo) {
setLayout(null);
lbltitulo.setText(titulo);
setBackground(new Color(150,100,200));
lbltitulo.setBounds(200, 10, 200, 60);
lbltitulo.setFont(new Font("Arial", 1,35));
lblArea.setBounds(60, 80, 100, 30);
lblPerimetro.setBounds(260, 80, 100, 30);
lblVolumen.setBounds(460, 80, 100, 30);
lblBaseArea.setBounds(15, 130, 100, 30);
txtBaseArea.setBounds(65, 130, 100, 30);
lblAlturaArea.setBounds(15, 170, 100, 30);
txtAlturaArea.setBounds(65, 170, 100, 30);
lblBasePer.setBounds(215, 130, 100, 30);
txtBasePer.setBounds(265, 130, 100, 30);
lblAlturaPeri.setBounds(215, 170, 100, 30);
txtAlturaPeri.setBounds(265, 170, 100, 30);
lblBaseVol.setBounds(405, 130, 100, 30);
txtBaseVol.setBounds(465, 130, 100, 30);
lblAlturaVol.setBounds(405, 170, 100, 30);
txtAlturaVol.setBounds(465, 170, 100, 30);
lblAnchuraVol.setBounds(405, 210, 100, 30);
txtAnchuraVol.setBounds(465, 210, 100, 30);
btnArea.setBounds(50, 250, 100, 30);
btnPerimetro.setBounds(250, 250, 100, 30);
btnVolumen.setBounds(450, 250, 100, 30);
lblResulArea.setBounds(0, 290, 200, 60);
lblResulArea.setFont(new Font("Arial",1,20));
lblResulPer.setBounds(200, 290, 200, 60);
lblResulPer.setFont(new Font("Arial",1,20));
lblResulVol.setBounds(400, 290, 200, 60);
lblResulVol.setFont(new Font("Arial",1,20));
add(lbltitulo);
add(lblArea);
add(lblPerimetro);
add(lblVolumen);
add(lblBaseArea);
add(lblBasePer);
add(lblBaseVol);
add(lblAlturaVol);
add(txtBaseArea);
add(txtBasePer);
add(txtBaseVol);
add(txtAlturaVol);
add(btnArea);
add(btnPerimetro);
add(btnVolumen);
add(lblResulArea);
add(lblResulPer);
add(lblResulVol);
add(lblAlturaArea);
add(lblAlturaPeri);
add(lblAnchuraVol);
add(txtAlturaArea);
add(txtAlturaPeri);
add(txtAnchuraVol);
}
}
PanelTriangulo
/**
*
* @author LuisMitre
*
*/
public class PanelTriangulo extends JPanel {
public JLabel lbltitulo = new JLabel("Circulo");
public JLabel lblArea = new JLabel("Area");
public JLabel lblPerimetro = new JLabel("Perimetro");
public JLabel lblVolumen = new JLabel("Volumen");
public JLabel lblBaseVol = new JLabel("Base");
public JLabel lblBasePer = new JLabel("Base");
public JLabel lblBaseArea = new JLabel("Base");
public JLabel lblAlturaVol = new JLabel("Altura");
public JLabel lblResulArea = new JLabel("Area=");
public JLabel lblResulPer = new JLabel("Perimetro=");
public JLabel lblResulVol = new JLabel("Volumen=");
public JButton btnArea = new JButton("Area");
public JButton btnPerimetro = new JButton("Perimetro");
public JButton btnVolumen = new JButton("Volumen");
public JTextField txtBaseArea = new JTextField();
public JTextField txtBasePer = new JTextField();
public JTextField txtBaseVol = new JTextField();
public JTextField txtAlturaVol = new JTextField();
public JLabel lblAlturaArea=new JLabel("Altura");
public JLabel lblAlturaPeri=new JLabel("Altura");
public JLabel lblAnchuraVol=new JLabel("Anchura");
public JTextField txtAlturaArea=new JTextField();
public JTextField txtAlturaPeri=new JTextField();
public JTextField txtAnchuraVol=new JTextField();
public PanelTriangulo(String titulo) {
setLayout(null);
setBackground(new Color(150,150,150));
lbltitulo.setText(titulo);
lbltitulo.setBounds(200, 10, 200, 60);
lbltitulo.setFont(new Font("Arial", 1,35));
lblArea.setBounds(60, 80, 100, 30);
lblPerimetro.setBounds(260, 80, 100, 30);
lblVolumen.setBounds(460, 80, 100, 30);
lblBaseArea.setBounds(15, 130, 100, 30);
txtBaseArea.setBounds(65, 130, 100, 30);
lblAlturaArea.setBounds(15, 170, 100, 30);
txtAlturaArea.setBounds(65, 170, 100, 30);
lblBasePer.setBounds(215, 130, 100, 30);
txtBasePer.setBounds(265, 130, 100, 30);
lblAlturaPeri.setBounds(215, 170, 100, 30);
txtAlturaPeri.setBounds(265, 170, 100, 30);
lblBaseVol.setBounds(405, 130, 100, 30);
txtBaseVol.setBounds(465, 130, 100, 30);
lblAlturaVol.setBounds(405, 170, 100, 30);
txtAlturaVol.setBounds(465, 170, 100, 30);
lblAnchuraVol.setBounds(405, 210, 100, 30);
txtAnchuraVol.setBounds(465, 210, 100, 30);
btnArea.setBounds(50, 250, 100, 30);
btnPerimetro.setBounds(250, 250, 100, 30);
btnVolumen.setBounds(450, 250, 100, 30);
lblResulArea.setBounds(0, 290, 200, 60);
lblResulArea.setFont(new Font("Arial",1,20));
lblResulPer.setBounds(200, 290, 200, 60);
lblResulPer.setFont(new Font("Arial",1,20));
lblResulVol.setBounds(400, 290, 200, 60);
lblResulVol.setFont(new Font("Arial",1,20));
add(lbltitulo);
add(lblArea);
add(lblPerimetro);
add(lblVolumen);
add(lblBaseArea);
add(lblBasePer);
add(lblBaseVol);
add(lblAlturaVol);
add(txtBaseArea);
add(txtBasePer);
add(txtBaseVol);
add(txtAlturaVol);
add(btnArea);
add(btnPerimetro);
add(btnVolumen);
add(lblResulArea);
add(lblResulPer);
add(lblResulVol);
add(lblAlturaArea);
add(lblAlturaPeri);
add(lblAnchuraVol);
add(txtAlturaArea);
add(txtAlturaPeri);
add(txtAnchuraVol);
}
}
Paso 14: Ahora Procedemos a crear la clase que sera nuestra ventana Principal donde agregaremos los paneles anteriores, la Clase la Llamaremos Ventana y heredara de JFrame:
/**
*
* @author LuisMitre
*
*/
public class Ventana extends JFrame{
}
Paso 15: Creamos un Objeto de La Clase JTabbedPane que es un componente que me permite organizar paneles y agrega una pestaña por cada panel agregado, también crearemos un objeto por cada panel que vamos a agregar, en este caso serán un objeto para cada una de las clases, PanelCirculo, PanelCuadrado, PanelTriangulo, PanelRectangulo:
public JTabbedPane pestana=new JTabbedPane();
public PanelCirculo pnlCirculo=new PanelCirculo("CIRCULO");
public PanelCuadrado pnlCuadrado=new PanelCuadrado("CUADRADO");
public PanelRectangulo pnlRectangulo= new PanelRectangulo("Rectangulo");
public PanelTriangulo pnlTriangulo= new PanelTriangulo("Triangulo");
Paso 16: Creamos nuestro constructor de esta clase, en el asignaremos el sistema de posición de los componentes que este caso sera por Fronteras,
setLayout(new BorderLayout());
Paso 17: Creamos las Pestañas que necesitaremos agregando los contenedores a estas, la sintaxis para hacerlo es el siguiente:
.insertTab( textoEnPestaña, icono, componente, TextoDeAyuda, indice);
Para este ejercicio no utilizaremos icono por consecuente ponemos null.
pestana.insertTab("Circulo",null,pnlCirculo,"Calculos de Circulo",0);
pestana.insertTab("Cuadrado",null,pnlCuadrado,"Calculos de Cuadrado",1);
pestana.insertTab("Rectangulo",null,pnlRectangulo,"Calculos de Rectangulo",2);
pestana.insertTab("Triangulo",null,pnlTriangulo,"Calculos de Triangulo",3);
Paso 18: Agregamos ahora el objeto pestañas a la ventana indicando que en el centro de la ventana.
add(pestana, BorderLayout.CENTER);
Paso 19: Por utimo asignamos tamaño a la ventana y le permitimos que se visible..
setSize(600,400); setVisible(true);
Paso 20: Creamos en esta misma clase un método que llamaremos accionesBotones en el cual le asignaremos todas las acciones a cada botón..
Nota: primero agregaremos una linea de codigo que le indicara a nuestra ventana que hacer en caso de que le demos cerrar, ya que esta solo se oculta pero se sigue ejecutando.
public void accionesBotones(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Paso 21: Agregamos el Escuchador al botón de Área de Circulo para calcular el Área:
Nota: Los Botones para poder nombrarlos y poder acceder a sus acciones, se harán por medio del objeto que fue creado perteneciente a Cada figura Geometrica
pnlCirculo.btnArea.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
double radio=
Double.parseDouble(
pnlCirculo.txtRadioArea.getText());
double area=3.1416*(radio*radio);
pnlCirculo.lblResulArea.setText(
"Area= "+area);
}
});
y isa por cada botón pondremos las operaciones necesarias para cada figura..
Paso Final: Solo nos Falta ejecutar nuestro programa para ello, creamos una nueva clase que llamaremos Auxiliar, en la cual Pondremos el método main que es el que iniciara el programa, en este crearemos un objeto de la clase Ventana y a través de este llamaremos al método accionesBotones..
/**
*
* @author LuisMitre
*
*/
public class Auxiliar {
public static void main(String[] args) {
Ventana objetoPrincipal=new Ventana();
objetoPrincipal.accionesBotones();
}
}
El Resultado deberá quedar de la siguiente manera:
![]() |
![]() |
![]() |
![]() |
@Autor: Luis Mitre





