Java envío de eventos

Kr4n3oK

Hola estoy programando un pequeño bloc de notas a nivel personal, si eso cuando lo termine envío el código para que lo miréis y tal.

La duda que tengo es la siguiente:

En el Menú Archivo tendríamos la opción de Nuevo Archivo, bien, esto lo que hace es preparar un descriptor File apuntando a un archivo nuevo llamado Archivo Nuevo en caso de que en el editor de textos no haya nada, es decir, esté vacío, por el contrarío si tiene algún texto escrito nos saltará un JFrame avisándonos de si queremos guardar el texto que hay en ese momento en el JEditor.
En el JFrame que avisa sobre lo de guardar el archivo hay dos botones, Guardar y Cancelar, bien y aquí la duda:

¿Como puedo pasar a la clase que ejecuta el JFrame este el evento que ejecuta alguno de esos dos botones?
Espero que me entendáis.

Gracias y saludos.

Os pego la parte de código para que así tengáis algo mas de referencia:

applicationFrame

public void archivoNuevo() {
        if ("".equals(jEditorPane1.getText())) {
            newFile = new File(nombreArchivo);
            jEditorPane1.setText("");
        } else {
            salvarFrame sf = new salvarFrame(nombreArchivo);
            sf.setVisible(true);
            sf.setLocationRelativeTo(null);


        

    }
}

salvarFrame

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      
setVisible(false); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { setVisible(false); }
bLero

nose si te he entendido bien, pero si lo que quieres es poder acceder al frame principal desde el frame de salvar, deberías pasarle en el constructor del salvarFrame el JFrame principal.

applicationFrame

SalvarFrame sf = new SalverFrame(nombreArchivo, this);
sf.setVisible(true);

y en salvarFrame en el constructor deberás hacer:

private String nombreArchivo = null;
private JFrame jf = null;

Public SalvarFrame(String nombreArchivo, JFrame jf){
     this.nombreArchivo = nombreArchivo;
     this.jf = jf;
}

De esa forma ya podrás acceder desde ese Frame al otro, que supongo que es lo que querias.

2 respuestas
Kr4n3oK

Vale guay, a ver si así puedo.

Kr4n3oK

#2 Gracias, de esa manera he conseguido controlar todo :D

elkaoD

#2 eso es una guarrada del quince.

Lo ideal es definirte un interface para ello (para no exponer el JFrame completo al diálogo, sólo el interfaz necesario), darle la vuelta al flujo de comunicación (el padre pregunta al hijo, no el hijo modifica al padre) o incluso mejor:

http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

Que funciona con el flujo a la inversa (el JFrame pregunta al Dialog.)

2 respuestas
bLero

#5

Esta claro que es mucho mejor con una interfaz, pero si no sabia como hacer eso yo se lo he explicado de la forma más fácil, no me iva a poner a enseñarle patrones de diseño, XD.

Pero sí #1 , deberías utilizar lo que dice #5, lo que he puesto yo es una mala práctica.

1 1 respuesta
Kr4n3oK

#5 Gracias así mejor, y a ti también #6 no me olvido de ti xdd

Usuarios habituales

  • Kr4n3oK
  • bLero
  • elkaoD