EJERCICIO DE GENERADOR DE JOptionPane EN JAVA
En el siguiente ejercicio vamos a
realizar un frame en el que introduciremos una primera lámina, dentro de esta
lámina principal introduciremos varias láminas que distribuiremos con los
Layouts libres de java para no someternos a ningún diseño establecido por defecto.
·
Situaremos una lámina en la parte superior con un
menú al que le incorporaremos iconos con imágenes.
MENÚ:
INICIO
SALIR (nos sacará
de la aplicación)
TIPO
MENSAJE
ENTRADA
DATOS POR CONSOLA
MENSAJES
MENSAJE ESTÁNDAR
MENSAJE OPCIONES
SUBTIPO
MENSAJE
ERROR
PELIGRO
INFORMACIÓN
POR DEFECTO
MENSAJE
CONFIRMACIÓN (RadioButtonGrup)
POR DEFECTO
SI/NO
SI/NO/CANCELAR
SI/CANCELAR
·
Situaremos cuatro laminas en el lateral izquierdo
que cuando presionemos en cada uno de ellos aumente de tamaño. Estas láminas
tendrán un titulo de lámina un reborde con una línea como una caja.
1.
Lamina
tipo mensaje a la que le cargaremos un JComboBox con los siguientes ítems.
§
Mensaje aviso
§
Mensaje entrada datos.
§
Mensaje confirmación.
§
Mensaje opciones.
2.
Lámina
Tipo icono con JRadioButton en un ButtonGroup.
§ ESTÁNDAR
§ SI/NO
§ SI/NO/CANCELAR
§ SI/CANCELAR
3.
Lámina
botones con 5 JButtons y un ImageIcon dentro de ellos.
§ ERROR
§ PELIGRO
§ INFORMACIÓN
§ POR DEFECTO
4. Tipo
mensaje Confirmación con dos botones
§ Crear
§ Cancelar
Nuestra
aplicación genera todos los tipos de mensajes JOptionPane (showMessageDialog, showInputDialog, showConfirmDialog, showOptionDialog) e introducirá en ellos iconos, y en el caso de showConfirmDialog crearemos una lámina que se hará
visible cuando seleccionemos mensaje de opciones. En esta lámina pondremos rellenar el texto que saldrá en el JOptionPane y el nombre de los botones.
Así he realizado el ejercicio yo:
import java.awt.BorderLayout;
import java.awt.Color;
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 java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
public class
practicaCreadorDeMensajes {
public static void main(String[] args) {
Marco_practicaCreadorDeMensajes
Marco = new Marco_practicaCreadorDeMensajes();
Marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Marco.setVisible(true);
//Marco.setExtendedState(JFrame.MAXIMIZED_BOTH);
Marco.setBounds(900, 30, 400, 800);
}
}
class Marco_practicaCreadorDeMensajes
extends JFrame {
public Marco_practicaCreadorDeMensajes() {
setTitle("CREADOR DE MENSAJES");
PRINCIPAL = new
Lamina_PrincipaldelMarco();
TipoBotones = new Lamina_TipoMensaje();
Seleccion = new Lamina_IconoSleccionado();
Confirmacion = new Lamina_TipoMensajeConfirmacion();
Menu = new Lamina_Menu_Superior();
BotonesAccion = new L_bott_creaMarcos();
MarcoBox2_= new MarcoBox2();
MarcoBox2_.setVisible(false);
PRINCIPAL.setLayout(null);
TipoBotones.addMouseMotionListener(new oyente_raton());
Seleccion.addMouseMotionListener(new oyente_raton());
Confirmacion.addMouseListener(new oyente_raton());
BotonesAccion.addMouseListener(new oyente_raton());
TipoBotones.addMouseListener(new oyente_raton());
Seleccion.addMouseListener(new oyente_raton());
Confirmacion.addMouseListener(new oyente_raton());
BotonesAccion.addMouseListener(new oyente_raton());
PRINCIPAL.add(Menu);
PRINCIPAL.add(TipoBotones);
PRINCIPAL.add(Seleccion);
PRINCIPAL.add(Confirmacion);
PRINCIPAL.add(BotonesAccion);
//utilizamos la nomenclatura
del punto para poner a la escucha todos
los objetos
//de las diferentes
láminas.
BotonesAccion.CrearMesaje.addActionListener(new elquetodoloescucha());
BotonesAccion.Cancelar.addActionListener(new elquetodoloescucha());
Seleccion.PORDEFECTO.addActionListener(new elquetodoloescucha());
Seleccion.SICANCELAR.addActionListener(new elquetodoloescucha());
Seleccion.SiNO.addActionListener(new elquetodoloescucha());
Seleccion.SINOCANCELAR.addActionListener(new elquetodoloescucha());
Confirmacion.ERROR.addActionListener(new elquetodoloescucha());
Confirmacion.NA.addActionListener(new elquetodoloescucha());
Confirmacion.PELIGRO.addActionListener(new elquetodoloescucha());
Confirmacion.INFORMACION.addActionListener(new elquetodoloescucha());
Confirmacion.PREGUNTA.addActionListener(new elquetodoloescucha());
//para poner a la
escucha un item del comboTipoMensaje
TipoBotones.comboTipoMensaje.addItemListener(new elquetodoloescucha());
add(PRINCIPAL);
}
private String String_TipMen;
private int INT_tipMensaConr,Int_botDeJOption;
private String NombesBotones[];
class elquetodoloescucha implements ActionListener,ItemListener{
public void
actionPerformed(ActionEvent e2) {
System.out.println(e2.getActionCommand());
if ( e2.getActionCommand()=="SI / NO") {Int_botDeJOption = 0;
}else if ( e2.getActionCommand()=="SI / CANCELAR") {Int_botDeJOption = 2;
}else if ( e2.getActionCommand()=="SI / NO / CANCELAR" ) {Int_botDeJOption = 1;
}else if ( e2.getActionCommand()=="ESTANDAR"){ Int_botDeJOption=JOptionPane.YES_OPTION;
/*• Si ponemos 0 nos cargarán dos
botones si/no
• Si ponemos 1 nos cargarán
tres botones si/no/cancelar
• Si ponemos 2 apareceran
dos botones aceptar/cancelar */
}else if (e2.getActionCommand()=="ERROR") { INT_tipMensaConr=0;
}else if (e2.getActionCommand()=="INFORMACION") { INT_tipMensaConr=1;
}else if (e2.getActionCommand()=="PILIGRO") { INT_tipMensaConr=2;
}else if (e2.getActionCommand()=="PREGUNTA") { INT_tipMensaConr=3;
}else if (e2.getActionCommand()=="N/A") { INT_tipMensaConr=-1;
}
if (e2.getActionCommand()
== "CREARMENSAJE" ) {
if (String_TipMen == "MENSAJE AVISO") {
JOptionPane.showMessageDialog(PRINCIPAL, "Mensaje", "JOtionPane",INT_tipMensaConr);
}else if(String_TipMen == "MENSAJE DE ENTRADA DATOS") {
JOptionPane.showInputDialog(PRINCIPAL, "Mensaje", "JOtionPane",INT_tipMensaConr);
}else if(String_TipMen == "MENSAJE CONFIRMACION") {
JOptionPane.showConfirmDialog(PRINCIPAL, "Mensaje", "JOtionPane",Int_botDeJOption ,INT_tipMensaConr);
}else if(String_TipMen == "MENSAJE OPCIONES") {
JOptionPane.showOptionDialog(PRINCIPAL, MarcoBox2_.texto_de_nuevo_mensaje, "JOtionPane",Int_botDeJOption ,INT_tipMensaConr, new
ImageIcon (""),new
String[]{ MarcoBox2_.nombre_botones1,MarcoBox2_.nombre_botones2,MarcoBox2_.nombre_botones3,MarcoBox2_.nombre_botones4},1);
}
}
}
public void
itemStateChanged(ItemEvent e) {
// ******** primero tenemos que escojer
entre los dos que nos regeresa el Selecionado **********
//////
if(e.getStateChange() == ItemEvent.SELECTED){
String_TipMen =
(String) e.getItem();
System.out.println(String_TipMen);
if(String_TipMen == "MENSAJE OPCIONES") { MarcoBox2_.setVisible(true);
}
}
///////////**********_____________________________________________________***********////////
}
}
JOptionPane pnelaccion;
Lamina_Menu_Superior
Menu ;
Lamina_TipoMensaje TipoBotones;
Lamina_IconoSleccionado
Seleccion;
Lamina_TipoMensajeConfirmacion
Confirmacion ;
L_bott_creaMarcos BotonesAccion;
Lamina_PrincipaldelMarco
PRINCIPAL;
MarcoBox2 MarcoBox2_;
private class
oyente_raton implements MouseMotionListener,MouseListener{
public void
mouseDragged(MouseEvent e) {}
public void
mouseMoved(MouseEvent e) {}
public void
mouseClicked(MouseEvent e) {
if (e.getSource()==TipoBotones) {TipoBotones.setBounds(10,60,300,500);
Seleccion.setVisible(false);
Confirmacion.setVisible(false);
BotonesAccion.setVisible(false);}
else if (e.getSource()==Seleccion) {Seleccion.setBounds(10,60,300,500);
TipoBotones.setVisible(false);
Confirmacion.setVisible(false);
BotonesAccion.setVisible(false);}
else if (e.getSource()==Confirmacion) {Confirmacion.setBounds(10,60,300,500);
TipoBotones.setVisible(false);
Seleccion.setVisible(false);
BotonesAccion.setVisible(false);}
else if (e.getSource()==BotonesAccion) {BotonesAccion.setBounds(10,60,300,500);
TipoBotones.setVisible(false);
Confirmacion.setVisible(false);
Seleccion.setVisible(false);}
}
public void
mouseEntered(MouseEvent e) {}
public void
mouseExited(MouseEvent e) {}
public void
mousePressed(MouseEvent e) {}
public void
mouseReleased(MouseEvent e) {
if (e.getSource()==TipoBotones) {TipoBotones. setBounds(10, 60,300,100);
Seleccion.setVisible(true);
Confirmacion.setVisible(true);
BotonesAccion.setVisible(true);}
else if (e.getSource()==Seleccion) {Seleccion.setBounds(10,170,300,150);
TipoBotones.setVisible(true);
Confirmacion.setVisible(true);
BotonesAccion.setVisible(true);}
else if (e.getSource()==Confirmacion) {Confirmacion.setBounds(10,330,300,200);
TipoBotones.setVisible(true);
Seleccion.setVisible(true);
BotonesAccion.setVisible(true);}
else if (e.getSource()==BotonesAccion) {BotonesAccion. setBounds(10,550,300,150);
TipoBotones.setVisible(true);
Confirmacion.setVisible(true);
Seleccion.setVisible(true);}
}
}
}
class Lamina_Menu_Superior extends JPanel{
public
Lamina_Menu_Superior() {
setBackground(Color.DARK_GRAY);
setBounds(10,10,1340,35);
//setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK,
Color.RED),"TIPO DE MENSAJE"));
BarraDelMenu = new
JMenuBar();
ImageIcon
ImageIcon_ERROR = new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_warning_1.jpg");
ImageIcon
ImageIcon_INFORMACION = new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_informacion.jpg");
ImageIcon
ImageIcon_PELIGRO= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_herror.png");
ImageIcon
ImageIcon_NA= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_Preguntas_2.jpg");
BarraDelMenu.add(Inicio=new JMenu("INICIO"));
Inicio.add(Salir = new
JMenuItem("Salir",new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/SALIR.jpg")));
//ponemos a la escucha
el menú salir
Salir.addActionListener(new ActionListener(){
public void
actionPerformed(ActionEvent e) {
System.exit (0);//salir del sistema//
}
});
BarraDelMenu.add(TipMensaje = new JMenu("TIPO MENSAJE"));
TipMensaje.add(ENT_DATOS = new JMenuItem("ENTRADA DATOS POR
CONSOLA"));
TipMensaje.add(MENSAJE = new JMenuItem("MENSAJES"));
TipMensaje.add(COFIRMACI = new JMenuItem("MENSAJE ESTANDAR "));
TipMensaje.add(OPCIONES = new JMenuItem("MENSAJE OPCIONES "));
BarraDelMenu.add(SubTipo = new JMenu("SUB TIPO MENSAJE"));
SubTipo.add(ERROR =
new JMenuItem("ERROR",ImageIcon_ERROR));
SubTipo.add(PELIGRO =
new JMenuItem("PELIGRO",ImageIcon_PELIGRO));
SubTipo.add(INFORMACION =
new JMenuItem("INFORMACION",ImageIcon_INFORMACION));
SubTipo.add(NA = new JMenuItem("PORDEFECTO",ImageIcon_NA));
BarraDelMenu.add(BotConfirmacion = new JMenu("MENSAJE CONFIRMACIÓN"));
grupotipo = new ButtonGroup();
grupotipo.add(PORDEFECTO = new JRadioButton("PORDEFECTO"));
grupotipo.add(SiNO = new JRadioButton("SI / NO"));
grupotipo.add(SICANCELAR = new JRadioButton("SI / CANCELAR"));
grupotipo.add(SINOCANCELAR = new JRadioButton("SI / NO / CANCELAR"));
BotConfirmacion.add(PORDEFECTO) ;
BotConfirmacion.add(SiNO);
BotConfirmacion.add(SICANCELAR) ;
BotConfirmacion.add(SINOCANCELAR);
add(BarraDelMenu);
}
private JMenu Inicio,TipMensaje,SubTipo,BotConfirmacion,CargaJMenu ;
private JMenuItem Salir,ERROR,PELIGRO,INFORMACION,NA,
ENT_DATOS,MENSAJE,COFIRMACI,OPCIONES;
private ButtonGroup grupotipo;
private JRadioButton PORDEFECTO,SiNO,SICANCELAR,SINOCANCELAR;
private JMenuBar BarraDelMenu;
}
class Lamina_PrincipaldelMarco extends JPanel{
public Lamina_PrincipaldelMarco() {
setBackground(Color.BLACK);
}
}
class Lamina_TipoMensaje extends JPanel{
JComboBox comboTipoMensaje ;
public Lamina_TipoMensaje() {
setBackground(Color.WHITE);
setBounds(10,60,300,100);
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.RED),"TIPO DE MENSAJE"));
comboTipoMensaje = new JComboBox();
comboTipoMensaje.addItem("");
comboTipoMensaje.addItem("MENSAJE AVISO");
comboTipoMensaje.addItem("MENSAJE DE ENTRADA
DATOS");
comboTipoMensaje.addItem("MENSAJE CONFIRMACION");
comboTipoMensaje.addItem("MENSAJE OPCIONES");
add(new JLabel("TIPOMENSAJE"));
add(comboTipoMensaje);
}
}
class Lamina_IconoSleccionado extends JPanel{
public Lamina_IconoSleccionado() {
setBackground(Color.WHITE);
setBounds(10,170,300,150);
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.RED),"TIPO DE ICONO"));
setLayout(new GridLayout(4,1));
TIP_MEN_CONFIRM = new
ButtonGroup();
PORDEFECTO = new
JRadioButton("ESTANDAR");
SiNO = new JRadioButton("SI / NO");
SICANCELAR = new
JRadioButton("SI /
CANCELAR");
SINOCANCELAR = new
JRadioButton("SI / NO
/ CANCELAR");
TIP_MEN_CONFIRM.add(PORDEFECTO);
TIP_MEN_CONFIRM.add(SiNO);
TIP_MEN_CONFIRM.add(SICANCELAR);
TIP_MEN_CONFIRM.add(SINOCANCELAR);
add(PORDEFECTO);add(SiNO);add(SICANCELAR);add(SINOCANCELAR);
}
JRadioButton PORDEFECTO,SiNO,SICANCELAR,SINOCANCELAR;
ButtonGroup TIP_MEN_CONFIRM;
}
class Lamina_TipoMensajeConfirmacion
extends JPanel{
public Lamina_TipoMensajeConfirmacion() {
setBackground(Color.WHITE);
setBounds(10,330,300,200);
setLayout(new GridLayout(3,1));
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.RED),"TIPO DE MENSAJE CONFIRMACIÓN"));
ImageIcon_ERROR = new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_warning_1.jpg");
ImageIcon_INFORMACION = new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_informacion.jpg");
ImageIcon_PELIGRO= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_herror.png");
ImageIcon_PREGUNTA= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_Warning_2.png");
ImageIcon_NA= new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_Preguntas_2.jpg");
Botones = new
ButtonGroup();
Array_Botones = new
JButton[] {ERROR = new
JButton("ERROR",ImageIcon_ERROR),
INFORMACION = new JButton("INFORMACION",ImageIcon_INFORMACION),
PELIGRO = new JButton("PILIGRO",ImageIcon_PELIGRO),
PREGUNTA = new JButton("PREGUNTA",ImageIcon_NA),
NA = new JButton("N/A",ImageIcon_PREGUNTA)
};
for (int i =0;i<Array_Botones.length;i++) {
Botones.add(Array_Botones[1]);
add(Array_Botones[i]);
}
}
JButton ERROR,INFORMACION,PELIGRO,PREGUNTA,NA,Array_Botones[];
ButtonGroup Botones;
ImageIcon ArraydeIcono[],ImageIcon_ERROR,ImageIcon_INFORMACION,ImageIcon_PELIGRO,ImageIcon_PREGUNTA,ImageIcon_NA;
}
class L_bott_creaMarcos extends JPanel{
public L_bott_creaMarcos() {
setBackground(Color.WHITE);
setBounds(10,550,300,130);
setLayout(new GridLayout(1,1));
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.RED),"TIPO DE MENSAJE CONFIRMACIÓN"));
add(CrearMesaje=new
JButton("CREARMENSAJE", new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_BIEN.png")));
add(Cancelar=new
JButton("CANCELAR", new
ImageIcon("C:\\Users\\dagip\\Desktop\\ddddddddddd\\src/ImageIcon_Aspa.png")));
}
JButton Cancelar,CrearMesaje;
}
class MarcoBox2 extends JFrame{
public MarcoBox2() {
setTitle ("caja Box");
setBounds(700,100,300,500);
texto1 = new JLabel("TEXTO MENSAJE");
texto2 = new JLabel("BOTON 1 JOptionPane");
texto3 = new JLabel("BOTON 2 JOptionPane");
texto4 = new JLabel("BOTON 3 JOptionPane");
texto5 = new JLabel("BOTON 4 JOptionPane");
cajatexto1 = new JTextField(10);
cajatexto2 = new JTextField(10);
cajatexto3 = new JTextField(10);
cajatexto4 = new JTextField(10);
cajatexto5 = new JTextField(10);
Boton1 = new JButton("ACCEDER");
Boton2 = new JButton("NO ACCEDER");
cajatexto1.setMaximumSize(cajatexto1.getPreferredSize());
cajatexto2.setMaximumSize(cajatexto2.getPreferredSize());
cajatexto3.setMaximumSize(cajatexto3.getPreferredSize());
cajatexto4.setMaximumSize(cajatexto4.getPreferredSize());
cajatexto5.setMaximumSize(cajatexto5.getPreferredSize());
Box principal = Box.createVerticalBox();
Box caja1 = Box.createHorizontalBox();
caja1.add(texto1);
caja1.add(Box.createHorizontalStrut(15));//espacio entre cajas
caja1.add(cajatexto1);
Box
caja2 = Box.createHorizontalBox();
caja2.add(texto2);
caja2.add(Box.createHorizontalStrut(15));//espacio entre cajas
caja2.add(cajatexto2);
Box
caja3 = Box.createHorizontalBox();
caja3.add(texto3);
caja3.add(Box.createHorizontalStrut(15));//espacio entre cajas
caja3.add(cajatexto3);
Box
caja4 = Box.createHorizontalBox();
caja4.add(texto4);
caja4.add(Box.createHorizontalStrut(15));//espacio entre cajas
caja4.add(cajatexto4);
Box
caja5 = Box.createHorizontalBox();
caja5.add(texto5);
caja5.add(Box.createHorizontalStrut(15));//espacio entre cajas
caja5.add(cajatexto5);
Box
caja6 = Box.createHorizontalBox();
caja6.add(Boton1);
caja6.add(Box.createGlue());//espacio entre cajas
dinamico
caja6.add(Boton2);
Boton1.addActionListener(new ActionListener() {
public void
actionPerformed(ActionEvent e) {
texto_de_nuevo_mensaje =cajatexto1.getText();
nombre_botones1= cajatexto2.getText();
nombre_botones2= cajatexto3.getText();
nombre_botones3= cajatexto4.getText();
nombre_botones4= cajatexto5.getText();
setVisible(false);
}
});
principal.add (caja1);
principal.add (caja2);
principal.add (caja3);
principal.add (caja4);
principal.add (caja5);
principal.add (caja6);
add(principal,BorderLayout.CENTER);
}
private JLabel texto1,texto2,texto3,texto4,texto5;
public JTextField cajatexto1,cajatexto2,cajatexto3,cajatexto4,cajatexto5;
private JButton Boton1,Boton2;
String texto_de_nuevo_mensaje;
String nombre_botones1,nombre_botones2,nombre_botones3,nombre_botones4;
}
Si deseáis consultar cualquier dudad de sintaxis podéis mirar en mis apuntes de java en PDF.
No hay comentarios:
Publicar un comentario