Como codificar el button nuevo de mi Menu.

Disculpa yo de nuevo molestándote... Quisiera que me orientes como poder hacer que cuando de clic en mi button Nuevo del jFrame, me aparezca la pantalla inicial (Inicio, Conector, Fin).
- También si ya tengo otros objetos en mi área dibujo, y le doy clic en Nuevo, me salga un mensaje si deseo guardar lo que estuve haciendo, y me lleve al FileChooser de Guardar, caso contrario solo me visualice la pantalla inicial.

1 Respuesta

Respuesta
1
Es que tengo que alistarme porque haré un viaje con mi familia y estaré fuera una semana.
Para saber si le tienes que preguntar:
-Comprueba que tenga más de tres elementos el diagrama.
-Para lo de preguntar debes usar un JOptionPane. ShowConfirmDialog
Si hay solo tres elementos en los componentes o si ya has guardado:
Declaras nuevamente los componentes, new Vector etc.
Y le agregas como al principio de la clase cuando se empieza.
Te tengo que pedir que averigües sobre eso no porque no sepa sino porque no estaré.
Gracias amigo, seguiré los pasos que me dijiste, espero me pueda salir. Y si pudieras cuando regreses, seguir ayudando te lo agradecería.
Desde donde estoy ahora puedo accesar el internet de vez en cuando. No dudes en preguntar.
Bueno Amigo, así lo estuve haciendo la parte de Nuevo:
- Este código es de mi button Nuevo:
private void jB_NewActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String a="", b="";
        try {
            areaDibujo.nuevo(a, b);
        } catch (IOException ex) {
            //Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
- Y en la clase Lienzo puse:
public void nuevo(String a, String b) throws IOException
    {
        if(componentes.size()==3)
        {
          componentes = new Vector<ObjetoDibujable>();
            //ASIGNAR EL VECTOR PARA PODER DIBUJAR LOS OBJETOS.
        setComponentes(new Vector<ObjetoDibujable>());
        //DIBUJA EL OBJETO INICIO SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Inicio(getWidth()/2,24));
        //DIBUJA EL OBJETO FIN SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Fin(getWidth()/2,100));//getHeight()/2
        //VISIBLE LAS  EN PANTALLA.
        componentes.add (new Conector (componentes.get(0), componentes.get(1) ) );
        componentes.get(0).setSubordinado(componentes.get(2) );
        this.setVisible(true);
        repaint();
        //USA LA INTERFACE MOUSELISTENER PARA USAR EL MOUSE PARA DIBUJAR.
        this.addMouseListener(this);
        }
        else
        {
            int salir= JOptionPane.showConfirmDialog(null, "¿Desea Guardar los cambios efectuados en: Sinnombre.dfd? ",":::...SYS_DFD 1.0...:::",JOptionPane.YES_NO_CANCEL_OPTION);
        if(salir==JOptionPane.NO_OPTION)
          {
            componentes = new Vector<ObjetoDibujable>();
            //ASIGNAR EL VECTOR PARA PODER DIBUJAR LOS OBJETOS.
        setComponentes(new Vector<ObjetoDibujable>());
        //DIBUJA EL OBJETO INICIO SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Inicio(getWidth()/2,24));
        //DIBUJA EL OBJETO FIN SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Fin(getWidth()/2,100));//getHeight()/2
        //VISIBLE LAS  EN PANTALLA.
        componentes.add (new Conector (componentes.get(0), componentes.get(1) ) );
        componentes.get(0).setSubordinado(componentes.get(2) );
        this.setVisible(true);
        repaint();
        //USA LA INTERFACE MOUSELISTENER PARA USAR EL MOUSE PARA DIBUJAR.
        this.addMouseListener(this);
          }
         if(salir==JOptionPane.YES_OPTION)
            {
                FileNameExtensionFilter  filtro=new FileNameExtensionFilter("Guardar como archivo de [*.dfd]","dfd");
                //Se crear el filechooser
                JFileChooser saveDiagrama = new JFileChooser();
                //Se añade el filtro
                saveDiagrama.setFileFilter(filtro);
                //Titulo de la ventana
                saveDiagrama.setDialogTitle("Guardar archivo...");
                //Se crea un nuevo file donde se especifica la ruta de destino
                File ruta1 = new File("e:/");
                //Coloca la ruta donde se abrira el filechooser
                saveDiagrama.setCurrentDirectory(ruta1);
                int tipo=saveDiagrama.showSaveDialog(null);
                if(tipo==JFileChooser.APPROVE_OPTION)
                {
                    String ruta=saveDiagrama.getCurrentDirectory().getAbsolutePath();
                    String s1=saveDiagrama.getSelectedFile().getName();
                try {
                    this.guardaDiagrama(ruta,s1);
                    } catch (IOException ex) {}
                }
                componentes = new Vector<ObjetoDibujable>();
                //ASIGNAR EL VECTOR PARA PODER DIBUJAR LOS OBJETOS.
        setComponentes(new Vector<ObjetoDibujable>());
                //DIBUJA EL OBJETO INICIO SIEMPRE QUE SE INICIA EL PROGRAMA.
                componentes.add(new Inicio(getWidth()/2,24));
                //DIBUJA EL OBJETO FIN SIEMPRE QUE SE INICIA EL PROGRAMA.
                componentes.add(new Fin(getWidth()/2,100));//getHeight()/2
                //VISIBLE LAS  EN PANTALLA.
                componentes.add (new Conector (componentes.get(0), componentes.get(1) ) );
                componentes.get(0).setSubordinado(componentes.get(2) );
        this.setVisible(true);
        repaint();
                //USA LA INTERFACE MOUSELISTENER PARA USAR EL MOUSE PARA DIBUJAR.
        this.addMouseListener(this);
            }
        }
    }
- Amigo quisiera hacer que me reduzca el código, pero que siga la misma lógica.
Ayudame por favor... Gracias
Hola Amigo, espero me puedas ayudar... Gracias
Observaciones:
-Sustituye int "salir" por guardar, ya que pides si se quiere guardar, no si se quiere salir.
SetComponentes(new Vector<ObjetoDibujable>()); lo correcto es
setComponentes(componentes);
-Elimina donde aparecen (Aparecen varias veces):
this.setVisible(true);
this.addMouseListener(this);
- Crea un método reiniciar, este servirá para escribir una vez lo que incluyes creo 3 o más veces en ese código.
public void reiniciar () {
componentes = new Vector<ObjetoDibujable>();
            //ASIGNAR EL VECTOR PARA PODER DIBUJAR LOS OBJETOS.
        setComponentes(new Vector<ObjetoDibujable>());
        //DIBUJA EL OBJETO INICIO SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Inicio(getWidth()/2,24));
        //DIBUJA EL OBJETO FIN SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Fin(getWidth()/2,100));//getHeight()/2
        //VISIBLE LAS  EN PANTALLA.
        componentes.add (new Conector (componentes.get(0), componentes.get(1) ) );
        componentes.get(0).setSubordinado(componentes.get(2) );
}
Así que en todas las partes donde escribiste eso nada más pones:
reiniciar();
Vuelvo en un rato y vuelvo a analizar el código a ver si veo algo más xD.
Me avisas cualquier cosa =D.
Hola amigo disculpa la parte cuando el JOptionPane es igual a YES; tendría que usar prácticamente todo el código del buttonSave que esta en mi jFrame, esa parte es mi duda porque no se como invocarlo a mi clase Lienzo para no estar escribiendo todo el código nuevamente en mi clase, ya que todo eso esta en mi jFrame:
private void jB_SaveActionPerformed(java.awt.event.ActionEvent evt) {                                        
        //Crea un nuevo filtro
        FileNameExtensionFilter  filtro=new FileNameExtensionFilter("Guardar como archivo de [*.dfd]","dfd");
        //Se crear el filechooser
        JFileChooser saveDiagrama = new JFileChooser();
        //Se añade el filtro
        saveDiagrama.setFileFilter(filtro);
        //Titulo de la ventana
        saveDiagrama.setDialogTitle("Guardar archivo...");
        //Se crea un nuevo file donde se especifica la ruta de destino
        File ruta1 = new File("e:/");
        //Coloca la ruta donde se abrira el filechooser
        saveDiagrama.setCurrentDirectory(ruta1);
        int tipo=saveDiagrama.showSaveDialog(null);
        if(tipo==JFileChooser.APPROVE_OPTION)
        {
            String ruta=saveDiagrama.getCurrentDirectory().getAbsolutePath();
            String s1=saveDiagrama.getSelectedFile().getName();
            try {
                areaDibujo.guardaDiagrama(ruta,s1);
            } catch (IOException ex) {}
        }
    }
Y de mi clase Lienzo, cuando es YES, quisiera invocar a todo ese código antes de escribirlo, espero me puedas ayudar... Aquí te paso mi método NUEVO, haber si esta bien.
public void nuevo(String a, String b) throws IOException
    {
        if(componentes.size()==3)
        {
          reiniciar();
        }
        else
        {
            int guardar= JOptionPane.showConfirmDialog(null, "¿Desea Guardar los cambios efectuados en: Sinnombre.dfd? ",":::...SYS_DFD 1.0...:::",JOptionPane.YES_NO_CANCEL_OPTION);
            if(guardar==JOptionPane.NO_OPTION)
            {
                reiniciar();
            }
            if(guardar==JOptionPane.YES_OPTION) //ESTA PARTE QUISIERA REDUCIRLO...
            {
                FileNameExtensionFilter  filtro=new FileNameExtensionFilter("Guardar como archivo de [*.dfd]","dfd");
                //Se crear el filechooser
                JFileChooser saveDiagrama = new JFileChooser();
                //Se añade el filtro
                saveDiagrama.setFileFilter(filtro);
                //Titulo de la ventana
                saveDiagrama.setDialogTitle("Guardar archivo...");
                //Se crea un nuevo file donde se especifica la ruta de destino
                File ruta1 = new File("e:/");
                //Coloca la ruta donde se abrira el filechooser
                saveDiagrama.setCurrentDirectory(ruta1);
                int tipo=saveDiagrama.showSaveDialog(null);
                if(tipo==JFileChooser.APPROVE_OPTION)
                {
                    String ruta=saveDiagrama.getCurrentDirectory().getAbsolutePath();
                    String s1=saveDiagrama.getSelectedFile().getName();
                try {
                    this.guardaDiagrama(ruta,s1);
                    } catch (IOException ex) {}
                }
                reiniciar();
            }
        }
    }
    public void reiniciar()
    {
        componentes = new Vector<ObjetoDibujable>();
        //ASIGNAR EL VECTOR PARA PODER DIBUJAR LOS OBJETOS.
        setComponentes(componentes);
        //setComponentes(new Vector<ObjetoDibujable>());
        //DIBUJA EL OBJETO INICIO SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Inicio(getWidth()/2,24));
        //DIBUJA EL OBJETO FIN SIEMPRE QUE SE INICIA EL PROGRAMA.
        componentes.add(new Fin(getWidth()/2,100));//getHeight()/2
        //VISIBLE LAS  EN PANTALLA.
        componentes.add (new Conector (componentes.get(0), componentes.get(1) ) );
        componentes.get(0).setSubordinado(componentes.get(2) );
        repaint();
    }
Espero me puedas ayudar amigo, muchas Gracias por responderme...
Amigo aparte de la pregunta anterior, quisiera hacerte otra pregunta URGENTE para poder tener una mejor visualización de mi programa... El problema es el siguiente:
- Cuando tengo un diagrama ya guardado, y cuando lo abro nuevamente y hago modificaciones en el (agrego nuevos objetos), como haría para cuando le de guardar me lo reemplace encima del nombre del archivo que le di anteriormente, espero me puedas ayudar esa duda amigo, es muy urgente para poder presentar mi avance de esta semana.
- Ya que cuando modifico y le doy guardar por más que trato de seleccionarlo igual me lo guarda en otro archivo, quisiera que me lo siga guardando en el mismo.
Gracias...
En mejor de los casos cuando seleccione el archivo ya guardado, cuando estoy en la opción Abrir, y le de guardar me dea un mensaje si deseo reemplazarlo.
Espero me puedas responder. Gracias.
Tu respuesta N1:
No tengo mi IDE donde estoy pero en lo que puedo ver podrías crear otro método también que contenga las instrucciones repetidas.
Tu respuesta N2:
Este tengo varias dudas, ya que debería funcionar. Solo espero que no esté protegido contra escritura.
Tu respuesta N3:
Prueba utilizando por ejemplo
File arch = new File ("nombre del archivo o puede ser una variable tipo String o URL, supongo");
File. Exists (); //Esto devuelve un boolean de si el archivo existe o no.
Hola amigo gracias por responder, en que método agregaría el *. exist(); en el guardar?, porque lo puse ahí y sigue igual.
- Pero seguiré intentando, muchas gracias.
Creo que debe ser antes de que se dé el guardarDiagrama, sería algo así como:
if (file.exists() )
Pregunta si quiere o no.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas