Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - JmpNull

#1
Saludos a todos!

Estoy desarrollando una especie de agenda que almacena todos los eventos dentro de un fichero txt. Lo estoy programando sobre NetBeans y todo funciona perfectamente hasta que creo el fichero .jar. Es aqui donde empieza el problema, ya que las rutas son diferentes. Sobre NetBeans es : "src/archivos/lista.txt" pero una vez creado el jar no puedo acceder a esa ruta, ya que es diferente. La carpeta src no existe y ademas no he conseguido entrar a la carpeta archivos dentro del jar.

Buscando por internet he encontrado soluciones para acceder al fichero y leerlo. Esto ahora mismo funciona perfectamente dentro de NetBeans y con el .jar:

Código (java) [Seleccionar]

String ruta = "lista.mem";
URL fileURL = Main.class.getResource(ruta);
BufferedReader br = new BufferedReader(new InputStreamReader(fileURL.openStream()));
String linea = br.readLine();


Ahora quisiera saber como poder guardar la informacion dentro del mismo archivo. De momento tengo una parte,pero no se como meter o escribir en este:

Código (java) [Seleccionar]

String ruta = "lista.mem";
URL fileURL = Main.class.getResource(ruta);
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fileURL.openStream()));
// ^ en esta linea tengo el problema...


Espero que me podais dar alguna solución, si no, me decantaré por pasar la ruta del archivo por los argumentos del programa.

Gracias por adelantado ;)

#2
Buenas!

Como últimamente me aburro bastante (hasta empezar otra vez la uni en 2o curso de Ingeniería Informática ;D), hoy he programado una clase estática que sirve para mostrar y recibir datos mediante simples mensajes por pantalla. Es muy simple, pero bastante útil a la hora de hacer programas simples o pedir datos en un cierto momento. Respetando el modelo MVC, es estática simplemente porque la interfaz de interacción con el usuario (en la mayoría de casos) tiene que ser independiente del programa para poder implementar el software en consola, web, etc. Espero que sirva de ayuda y os sea de interés!

Próximamente subiré algunos programas que he hecho durante estos casi 3 meses de vacaciones (lo que hace el aburrimiento  :xD).

Saludos a todos! :)

Nombre de la clase: SimpleGui.java

Código (java) [Seleccionar]

/*
* Copyright 2009 Juan Carlos <juancarloslinux@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

/**
* Clase estatica para pedir datos mediante interfaz grafica simple.
*
* @author JmpNull
*/
public class SimpleGui {

   /**
    * Este metodo se encarga de leer un objeto Integer.
    *
    * @param mensaje El mensaje que va a mostrar
    * @return El valor de retorno
    */
   public static Integer getInteger(String mensaje) {
       Integer i = null;
       boolean valido = false;
       while (!valido) {
           try {
               i = Integer.parseInt(JOptionPane.showInputDialog(mensaje));
               valido = true;
           } catch (NumberFormatException e) {
               printError("La entrada no es valida");
               i = null;
           }
       }
       return i;
   }

   /**
    * Este metodo se encarga de leer un objeto Double.
    *
    * @param mensaje El mensaje que va a mostrar
    * @return El valor de retorno
    */
   public static Double getDouble(String mensaje) {
       Double i = null;
       boolean valido = false;
       while (!valido) {
           try {
               i = Double.parseDouble(JOptionPane.showInputDialog(mensaje));
               valido = true;
           } catch (NumberFormatException e) {
               printError("La entrada no es valida");
               i = null;
           }
       }
       return i;
   }

   /**
    * Este metodo se encarga de leer un objeto Float.
    *
    * @param mensaje El mensaje que va a mostrar
    * @return El valor de retorno
    */
   public static Float getFloat(String mensaje) {
       Float i = null;
       boolean valido = false;
       while (!valido) {
           try {
               i = Float.parseFloat(JOptionPane.showInputDialog(mensaje));
               valido = true;
           } catch (NumberFormatException e) {
               printError("La entrada no es valida");
               i = null;
           }
       }
       return i;
   }

   /**
    * Este metodo se encarga de leer un objeto Character.
    *
    * @param mensaje El mensaje que va a mostrar
    * @return El valor de retorno
    */
   public static Character getCharacter(String mensaje) {
       Character salida = null;
       boolean valido = false;
       while (!valido) {
           String valor = JOptionPane.showInputDialog(mensaje);

           if (valor.length() == 0) {
               salida = ' ';
               valido = true;
           } else if (valor.length() == 1) {
               salida = valor.charAt(0);
               valido = true;
           } else {
               printError("La entrada no es valida");
           }
       }
       return salida;
   }

   /**
    * Este metodo se encarga de mostrar al usuario un mensaje de pregunta.
    *
    * @param entrada El mensaje de pregunta
    * @return El resultado
    */
   public static Integer getQuestion(String entrada) {
       return JOptionPane.showConfirmDialog(null, entrada);
       // 0 para yes
       // 1 para no
       // ? para cancel o x
   }

   /**
    * Este metodo se encarga de leer un objeto String.
    *
    * @param mensaje El mensaje que va a mostrar
    * @return El valor de retorno
    */
   public static String getString(String mensaje) {
       return JOptionPane.showInputDialog(mensaje);
   }

   /**
    * Este metodo muestra por pantalla un mensaje de tipo texto plano.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void printPlain(String entrada) {
       JOptionPane.showMessageDialog(null, entrada, "Salida",
               JOptionPane.PLAIN_MESSAGE);
   }

   /**
    * Este metodo muestra por pantalla un mensaje de tipo error.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void printError(String entrada) {
       JOptionPane.showMessageDialog(null, entrada, "Error",
               JOptionPane.ERROR_MESSAGE);
   }

   /**
    * Este metodo muestra por pantalla un mensaje de tipo pregunta.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void printQuestion(String entrada) {
       JOptionPane.showMessageDialog(null, entrada, "Salida",
               JOptionPane.QUESTION_MESSAGE);
   }

   /**
    * Este metodo muestra por pantalla un mensaje de tipo informativo.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void printInformation(String entrada) {
       JOptionPane.showMessageDialog(null, entrada, "Salida",
               JOptionPane.INFORMATION_MESSAGE);
   }

   /**
    * Este metodo muestra por pantalla un mensaje de tipo aviso.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void printWarning(String entrada) {
       JOptionPane.showMessageDialog(null, entrada, "Salida",
               JOptionPane.WARNING_MESSAGE);
   }

   /**
    * Este metodo muestra por pantalla un mensaje dentro de un objeto
    * JTextArea.
    *
    * @param entrada El objeto JTextArea
    */
   public static void println(JTextArea entrada) {
       JOptionPane.showMessageDialog(null, entrada);
   }    
   
   /**
    * Este metodo muestra por pantalla un mensaje de tipo estandar.
    *
    * @param entrada El mensaje a mostrar
    */
   public static void println(String entrada) {
       JOptionPane.showMessageDialog(null, entrada);
   }    

   // IDEM
   public static void println(Integer entrada) {
       JOptionPane.showMessageDialog(null, String.valueOf(entrada));
   }

   public static void println(Double entrada) {
       JOptionPane.showMessageDialog(null, String.valueOf(entrada));
   }

   public static void println(Float entrada) {
       JOptionPane.showMessageDialog(null, String.valueOf(entrada));
   }

   public static void println(Character entrada) {
       JOptionPane.showMessageDialog(null, String.valueOf(entrada));
   }
}