¿Qué evento, clase y métodos debo utilizar para que al introducir datos se abra una nueva pantalla?
Hola robjcole, mi pregunta es fácil de ersponder, creo yo. Soy novato en la programación con Java y hay cosas que no domino todavía. Estoy haciendo una aplicación y deseo que después de introducir unos datos por teclado y pulsar un botón, se abra una nueva ventana. ¿Qué evento debo utilizar, que clase y que métodos para conseguir esto? Muchas gracias por tu respuesta.
En principio no me parece que sean tareas de un novato, vamos, que has empezado con ganas... pues bien, para leer de teclado necesitas abrir un flujo de lectura, para ello es de mucha utilidad la clase BufferedReader que se encuentra en el paquete java. Io . Después de crearte el flujo de lectura ordenarás que lea los datos, y que cuando se pulse determinado botón (es decir, cuando leas que lo introducido es ese botón), tienes que abrir una ventana. Para modelar una ventana puedes utilizar un objeto de la clase Window, Dialog o Frame (que se encuentran en el paquete java. Awt) o utilizar sus homónimas del paquete javax. Swing (JWindow, JDialog, JFrame). La diferencia entre las clases de javax. Swing y las de java. Awt es más bien de estilismo, ya que las primeras permiten una mayor configuración del estilo de las ventanas. Las diferencias entre Window, Dialog y Frame son sutiles, pero si vas a hacer una aplicación normalita y básica te da igual cual utilizar (aunque tal vez te recomendaría Frame). Eso es a grandes rasgos lo que tienes que hacer. Pues bien, para crear un flujo de entrada para leer de teclado harías lo siguiente: BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in)); De este modo el objeto buffer es el que te permite leer de teclado. Para leer algo sólo tienes que llamar al método readLine(), buffer. ReadLine() que te devuelve un String con lo que has leído. Irás cogiendo ese String y cuando veas que ese String es igual a una tecla que tú definas (por ejemplo, si dices que dando a la 'x' se terminan de introducir los datos, comparararías lo leído a ese valor, con el método equals(String), que devuelve true o false). Cuando suceda esto, te crearás un objeto Frame llamando al constructor e invocarás setVisible(true) sobre ese objeto. De esta manera consigues lo que querías. Si tienes alguna duda acerca de la solución, no dudes en preguntarme, espero que te sirva de ayuda. De todos modos mirate el API de java, la documentación de las clases donde vienen todos los métodos muy explicados, tal vez te ayude a comprender más la solución que te he propuesto.
Buenas... te explico. Me han ayudado bastante tus consejos, pero mi pregunta iba más encaminada hacia la forma de utilizar Eventos. Desde un archivo .java he creado una ventana (JFrame) en la que tengo un botón. Pulsando este botón deseo pasar a la siguiente ventana de mi aplicación. He creado otro fichero .java; una clase que heredea de la interfaz ActionListener. Me han comentado que debo tener en esta clase un método "actionPerformed" en el que debo crear mi nueva ventana y cerrar la anterior (ventanaAntigua.dispose()). ¿Esto es así? Te agradecería que m dieras algún consejo, ya que lo he intentado pero no consigo resolverlo. Muchas gracias
Vale, tienes una ventana JFrame, con un botón, y la cuestión es que quieres que se abra otra ventana... pues bien, la cosa es ésta: tienes que tener otro objeto JFrame (que será la ventana que quieres abrir), pongamos que se llama ventana2. Efectivamente para poder tratar los eventos generados al pulsar un botón tienes que implementar la clase ActionListener, que tiene un método, actionPerformed(ActionEvent e). No tienes por qué crearte una clase nueva, tu clase JFrame puede implementar a actionListener. Entonces lo único que tienes que hacer es poner el método actionPerformed(ActionEvent) y dentro de éste inicializar el objeto ventana2 (la nueva ventana), hacer ventana2. setVisible(true) (para hacerla visible) y this. Dispose(); para cerrar la ventana actual y ya está. Por supuesto, al crear el botón de la ventana le tienes que decir que vas a tratar sus eventos, para ello tienes que hacer botón. AddListener(this) y ya está. Espero que esto te sirva más, pero si no es así, lo mejor es que me escribas y me mandes tu e-mail para que te pueda responder mandándote los programas porque también me será más fácil a mí para probarlos y mandártelos (escribir por esta ventanita es un poco mierda...).
Muchas gracias por tu interés! Te lo agradezco de veras, me ha sido muy útil tus explicaciones. Gracias. Ya te escribiré un e-mail si tengo más dudas.