Problema con las ventanas o yo que sé!!
Tengo una duda en mi aplicación gráfica. Llevo todo el dÃa
pensándolo cómo resolverla pero ni idea. A ver, la duda es esta:
En la opción que he creado de modificar datos de los grupos aparece una ventana con unos campos que te piden los cambios a realizar,
la 1ª que entro en ella me sale una sola vez la ventana de confirmación de cambio que he creado, si vuelvo a entrar otra vez para
modificar este mismo campo me aparece dicha ventana de
confirmación 2 veces, si vuelvo a entrar de nuevo, 3 veces y
asà sucesivamente. Si entro en otro campo de cambio ahora,
sólo me aparece 1 vez, pero si vuelvo a entrar me ocurre lo
mismo que con el otro campo. Es como si los campos fuesen
independientes, pero luego funcionasen "igual de mal" todos ellos.
Espero que se entienda.
PD: Las ventanas de confirmación las hago cn un JOptioonPane, sin referirlos a ningún frame
pensándolo cómo resolverla pero ni idea. A ver, la duda es esta:
En la opción que he creado de modificar datos de los grupos aparece una ventana con unos campos que te piden los cambios a realizar,
la 1ª que entro en ella me sale una sola vez la ventana de confirmación de cambio que he creado, si vuelvo a entrar otra vez para
modificar este mismo campo me aparece dicha ventana de
confirmación 2 veces, si vuelvo a entrar de nuevo, 3 veces y
asà sucesivamente. Si entro en otro campo de cambio ahora,
sólo me aparece 1 vez, pero si vuelvo a entrar me ocurre lo
mismo que con el otro campo. Es como si los campos fuesen
independientes, pero luego funcionasen "igual de mal" todos ellos.
Espero que se entienda.
PD: Las ventanas de confirmación las hago cn un JOptioonPane, sin referirlos a ningún frame
Mira a ver si añades el action listener o lo que sea que muestre el JOptionPane varias veces. Tal cual lo cuentas, parece que lo haces cada vez que entras.
Si lo añades varias veces, se ejecutará varias veces y te mostrará el JOptionPane varias veces.
Añadelo en el momento de construir la ventana y nada más.
Se bueno.
Si lo añades varias veces, se ejecutará varias veces y te mostrará el JOptionPane varias veces.
Añadelo en el momento de construir la ventana y nada más.
Se bueno.
Perdona pero no creo qeu ese sea mi problema. Mira, te pongo parte del código porque siempre es igual, a ver si me puedes exar una mano. Muchas gracias de antemano :)
public void duda (){
if (ev.getSource() == g1) {
if(vec.size()!=0){
campoDatos.setText("");
campoDatos.setEditable(true);
JPanel panelFichero = new JPanel();
panelFichero.add(campoDatos);
ok1.addActionListener(this);
panelFichero.add(ok1);
vent1.setTitle("Coste mÃnimo");
vent1.setContentPane(panelFichero);
vent1.setSize(240,120);
vent1.setLocation(380,310);
vent1.pack();
vent1.setVisible(true);
}
else
JOptionPane.showMessageDialog( null, "Datos incorrectos.nNo hay ningún fichero cargado.nPor favor, cargue uno antes de buscar.", null, JOptionPane.ERROR_MESSAGE );
}
else if(ev.getSource() == ok1){
if(comprobarFloat (campoDatos.getText())){
try{
coste_min = new Float(cambiarComaAPunto(campoDatos.getText())).floatValue();
//vent1.setVisible(false);
vent1.dispose();
vent2.dispose();
//vent1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//vent2.setVisible(false);
Vector aux = cgg.devolverGrupo(vec,coste_min);
JTextArea jta = new JTextArea();
if (aux.size() != 0){
for(int i=0;i<aux.size();i++){
jta.append("Nombre:tt"+((CGrupo)aux.elementAt(i)).getNombre()+"n");
jta.append("Coste por tiempo:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getCosteTiempo())+"n");
jta.append("Coste fijo:tt"+String.valueOf(((CGrupo)aux.elementAt(i)).getCosteFijo())+"n");
jta.append("Duración mÃnima:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getDuracionMinima())+"n");
jta.append("Duración máxima:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getDuracionMaxima())+"n");
jta.append("Popularidad:tt"+String.valueOf(((CGrupo)aux.elementAt(i)).getPopularidad())+"nn");
}
}
else
jta.append("No hay ningún grupo con ese nombre.nPerdone las molestias.");
JScrollPane fileScrollPane = new JScrollPane(jta);
JPanel panelFichero1 = new JPanel(new BorderLayout(), false);
panelFichero1.add(fileScrollPane, BorderLayout.CENTER);
//panelFichero1.setBackground(Color.red);// Establecemos el color de fondo, que luego cambiaremos
vent2.setContentPane(panelFichero1);
vent2.setSize(300,200);
vent2.setVisible(true);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog( null, "Datos incorrectos.nEl coste tiene que ser un número real.nPor favor, introduzca de nuevo el coste.", null, JOptionPane.ERROR_MESSAGE );
}
}
else
JOptionPane.showMessageDialog( null, "Datos incorrectos.nEl coste tiene que tener el formato punto-flotante.nPor favor, introduzca de nuevo el coste.", null, JOptionPane.ERROR_MESSAGE );
}
}
public void duda (){
if (ev.getSource() == g1) {
if(vec.size()!=0){
campoDatos.setText("");
campoDatos.setEditable(true);
JPanel panelFichero = new JPanel();
panelFichero.add(campoDatos);
ok1.addActionListener(this);
panelFichero.add(ok1);
vent1.setTitle("Coste mÃnimo");
vent1.setContentPane(panelFichero);
vent1.setSize(240,120);
vent1.setLocation(380,310);
vent1.pack();
vent1.setVisible(true);
}
else
JOptionPane.showMessageDialog( null, "Datos incorrectos.nNo hay ningún fichero cargado.nPor favor, cargue uno antes de buscar.", null, JOptionPane.ERROR_MESSAGE );
}
else if(ev.getSource() == ok1){
if(comprobarFloat (campoDatos.getText())){
try{
coste_min = new Float(cambiarComaAPunto(campoDatos.getText())).floatValue();
//vent1.setVisible(false);
vent1.dispose();
vent2.dispose();
//vent1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//vent2.setVisible(false);
Vector aux = cgg.devolverGrupo(vec,coste_min);
JTextArea jta = new JTextArea();
if (aux.size() != 0){
for(int i=0;i<aux.size();i++){
jta.append("Nombre:tt"+((CGrupo)aux.elementAt(i)).getNombre()+"n");
jta.append("Coste por tiempo:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getCosteTiempo())+"n");
jta.append("Coste fijo:tt"+String.valueOf(((CGrupo)aux.elementAt(i)).getCosteFijo())+"n");
jta.append("Duración mÃnima:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getDuracionMinima())+"n");
jta.append("Duración máxima:t"+String.valueOf(((CGrupo)aux.elementAt(i)).getDuracionMaxima())+"n");
jta.append("Popularidad:tt"+String.valueOf(((CGrupo)aux.elementAt(i)).getPopularidad())+"nn");
}
}
else
jta.append("No hay ningún grupo con ese nombre.nPerdone las molestias.");
JScrollPane fileScrollPane = new JScrollPane(jta);
JPanel panelFichero1 = new JPanel(new BorderLayout(), false);
panelFichero1.add(fileScrollPane, BorderLayout.CENTER);
//panelFichero1.setBackground(Color.red);// Establecemos el color de fondo, que luego cambiaremos
vent2.setContentPane(panelFichero1);
vent2.setSize(300,200);
vent2.setVisible(true);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog( null, "Datos incorrectos.nEl coste tiene que ser un número real.nPor favor, introduzca de nuevo el coste.", null, JOptionPane.ERROR_MESSAGE );
}
}
else
JOptionPane.showMessageDialog( null, "Datos incorrectos.nEl coste tiene que tener el formato punto-flotante.nPor favor, introduzca de nuevo el coste.", null, JOptionPane.ERROR_MESSAGE );
}
}