Tengo un problemita..

JaV
18 de Diciembre del 2005
import java.awt.*;

class Ventana2 extends Frame{

Ventana2(){

this.setTitle("Ventana Abierta Número 2");
this.setSize(100, 100);
this.setVisible(true);
}
}


//Clase principal.
public class Ventana extends Frame{

Button b,e;
Label c,d;

Ventana2 objeto1 = new Ventana2();

/*nombredelaclase variable = new nombredelaclase();
variable.setVisible(true);
*/

public boolean action(Event e, Object obj){
if(obj.equals("Haz Click")){
d.setText("Has hecho click!");
}


if(obj.equals("Abre la ventana")){
c.setText("Ventana Abierta");
new Ventana2();

}

return true;

}

Ventana(){
this.setTitle("Ventana");
this.setLayout(new FlowLayout());


this.setSize(400, 400);

//Inicialización de los objetos
b = new Button("Haz Click");
e = new Button("Abre la ventana");
c = new Label("Layout 1 ");
d = new Label(" ");



//Añadimos objetos a la ventana
add(b);
add(e);
add(c);
add(d);

//Esto tiempre se coloca al final.
this.setVisible(true);
}






//main
public static void main(String args[]){
new Ventana();
}
}


tengo este código: lo que hace es q ue abre una ventana nueva al dar a un botón, y escribe un texto en un label al dar a otro botón.
Lo que quiero hacer es que al dar al botón de abrir una ventana, que abra solo 1, porqué si le doy muchas veces me abre 1000 ventanas...como podría hacer para que solo abrirera 1??
la idea q tengo es q hay q comprobar si ventana2 está abierta...pero como puedo hacer esto?

neossoftware
18 de Diciembre del 2005
Hola Que tal!!!

Antes de darte la respuesta a tu programilla, solo te quiero recomendar que utilices Java Swing, y ya no utilices AWT porque ya esta bastante atrazado, además se ve que ya tienes los conocimientos básicos de trabajo con Frames y Layouts, por lo que no se te dificultaria mucho aprender swing.

Vamos a la respuesta:

En tu evento lo que haces es crear la ventana cada que le dan click en el boton, lo unico que debes de hacer es modificar el constructor de Ventana2
asi:

public Ventana2( ){
this.setTitle("Ventana Abierta Número 2");
this.setSize(100, 100);
}

y en la clase Ventana en su evento quedaria asi

if(obj.equals("Abre la ventana")){
c.setText("Ventana Abierta");
objeto1.setVisible(true); //en lugar de crear la ventana cada que dan un click
}


Sale espero que esta sea la respuesta que estabas buscando
Saludos
Viva LINUX DEBIAN Y JAVA