Java lo basico para entenderlo

Embed Size (px)

DESCRIPTION

Tutoria java

Citation preview

1 coger plato2 echar jabn3 pasar el estropajo por el plato4 si hay suciedad ir a la instruccin 25 si el plato no es azul ir a la instruccin 76 ponerlo con los azules7 si hay ms platos ir a la instruccin 1mientras haya platos coger plato mientras haya suciedad echar jabon pasar el estropajo por el plato si plato es azul ponerlo con los azulesCUNDO USAR JFRAME Y CUNDO JDIALOGEn una aplicacin java con ventanas debera haber un nico JFrame, correspondiente a la ventana principal de la aplicacin. El resto de ventanas secundarias deberan ser JDialog. Por qu es esto?Un JFrame en una ventana que en Windows crea, en la barra de herramientas, donde est el men de "inicio" y las aplicaciones que tenemos abiertas, un nuevo botn de aplicacin abierta. En una aplcacin lo normal es que slo haya un botn ah. Si creamos varios JFrame en nuestra aplicacin, apareceran varios botones, uno por cada JFrame.El JDialog no muestra este botn. Por ello, el resto de las ventanas de nuestra aplicacin deberas ser JDialog.Hay otro motivo ms. Un JFrame no admite a ninguna otra ventana como padre. El JDialog s admite como padres un JFrame u otros JDialog. Esto es importante porque una ventana hija siempre quedar por encima de su ventana padre. Si al crear los JDialog les pasamos el JFrame como padre, los JDialog siempre estarn visibles por encima del JFrame. No se podrn ir "detrs" de l.Si adems, en el constructor del JDialog ponemos a true el flag que indica que es modal, adems de pasarle una ventana padre, entonces el JDialog impedir el acceso a las otras ventanas hasta que se cierre. Esta seria una forma de crear el JFrame y el JPanel pueden tambin descargarse el cdigo fuente el link lo deje mas abajo.String path="";//creamos una variable global para guardar el path private void open() throws IOException { //empezamos implementando la clase JFileChooser para abrir archivos JFileChooser JFC = new JFileChooser(); //filtro que muestra solo los archivos con extension *.edu JFC.setFileFilter(new FileNameExtensionFilter("todos los archivos *.EDU", "edu","EDU")); //se comprueba si se ha dado al boton aceptar int abrir = JFC.showDialog(null, "Abrir"); if (abrir == JFileChooser.APPROVE_OPTION) { FileReader FR = null; BufferedReader BR = null; try { //abro el fichero y creo un BufferedReader para hacer //una lectura comoda (tener el metodo readLine();) File archivo = JFC.getSelectedFile();//abre un archivo .lengf //evitar abrir archivo con otra extension que no sea *.LFP String PATH = JFC.getSelectedFile().getAbsolutePath(); if(PATH.endsWith(".edu")||PATH.endsWith(".EDU")){ FR = new FileReader(archivo); BR = new BufferedReader(FR); //leyendo el archivo String linea;//variable para leer linea por linea el archivo de entrada if(path.compareTo(archivo.getAbsolutePath())==0){ JOptionPane.showMessageDialog(this, "Archivo Abierto","Oops! Error", JOptionPane.ERROR_MESSAGE); }else{ path = archivo.getAbsolutePath(); jTextArea.setText(null);//limpiamos el textArea antes de sobreescribir while((linea=BR.readLine())!=null){ //cuando termina el texto del archivo? jTextArea.append(linea+"\n");//utilizamos append para escribir en el textArea } } }else{ JOptionPane.showMessageDialog(this, "Archivo no soportado","Oops! Error", JOptionPane.ERROR_MESSAGE); open(); } } catch (FileNotFoundException ex) { ex.printStackTrace(); //Logger.getLogger(fileChooser.class.getName()).log(Level.SEVERE, null, ex); //cerramos el fichero, para asegurar que se cierra tanto // si todo va bien si salta una excepcion } finally { try { if(null!= FR){ FR.close(); } } catch (IOException ex) { ex.printStackTrace(); //Logger.getLogger(fileChooser.class.getName()).log(Level.SEVERE, null, ex); } } } }private void save(){ String texto = jTextArea.getText();//variable para comparacion if (texto.matches("[[ ]*[\n]*[\t]]*")) {//compara si en el JTextArea hay texto sino muestrtra un mensaje en pantalla JOptionPane.showMessageDialog(null,"No hay texto para guardar!", "Oops! Error", JOptionPane.ERROR_MESSAGE); }else{ JFileChooser fileChooser = new JFileChooser(); fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("todos los archivos *.EDU", "edu","EDU"));//filtro para ver solo archivos .edu int seleccion = fileChooser.showSaveDialog(null); try{ if (seleccion == JFileChooser.APPROVE_OPTION){//comprueba si ha presionado el boton de aceptar File JFC = fileChooser.getSelectedFile(); String PATH = JFC.getAbsolutePath();//obtenemos el path del archivo a guardar PrintWriter printwriter = new PrintWriter(JFC); printwriter.print(jTextArea.getText());//escribe en el archivo todo lo que se encuentre en el JTextArea printwriter.close();//cierra el archivo //comprobamos si a la hora de guardar obtuvo la extension y si no se la asignamos if(!(PATH.endsWith(".edu"))){ File temp = new File(PATH+".edu"); JFC.renameTo(temp);//renombramos el archivo } JOptionPane.showMessageDialog(null,"Guardado exitoso!", "Guardado exitoso!", JOptionPane.INFORMATION_MESSAGE); } }catch (Exception e){//por alguna excepcion salta un mensaje de error JOptionPane.showMessageDialog(null,"Error al guardar el archivo!", "Oops! Error", JOptionPane.ERROR_MESSAGE); } } }JFileChooser para abrir y/o guardar archivosJFileChooser es una clase java que nos permite mostrar fcilmente una ventana para la seleccin de un fichero. En esta oportunidad les dejare un ejemplo de una de las muchas formas de como Abrir y Guardar un archivo aplicando filtros tambin que al momento de guardar genere automticamente la extensin y que evite abrir un archivo que ya se encuentra abierto.La relacin empleada para organizar los casos de uso es la de un extend, ya que se intenta identificar que cualquiera de estas funcionalidades se pueden o no realizar tanto individual corno conjuntamente. Adems, hemos relacionado mediante un extend el caso de uso de Gestin de locales y de pisos con el caso de uso Gestin de edificio. Con esto reflejamos que la gestin de edificios puede conllevar la gestin de locales, de pisos o de ambos.En el siguiente diagrama (ver Figura 2) se muestran los casos de uso relacionados con el actor inquilino. El inquilino va a ser aquella persona que tiene algn tipo de aval, de los expuestos en el enunciado, y, por tanto, puede realizar algunas de las siguientes operaciones en el sistema:? Alquilar.? Desalquilar.? Darse de baja.? Modificar sus datos.? Consultarlos.Para cada una de estas operaciones hay un caso de uso en el diagrama reflejando la situacin anterior. Adems, ya que se nos dice que para la realizacin de cualquiera de las operaciones es necesaria su identificacin, se ha reflejado un caso de uso nombrado Identificacin que se relaciona con los anteriores mediante la relacin de include. Con la relacin de include hacemos especial nfasis en esta situacin.Tras volver a examinar con ms detalle la descripcin proporcionada se observa que cuando se produce el alquiler ste puede ser el de un piso (Alquiler Piso) un local (Alquiler Local) y de edificio (Alquiler de Edificio). Por ello se generan tres nuevos casos de uso que implican una relacin de extend con el caso de uso de Alquilar.Como hemos observado que la primera vez que se produce una operacin de alquiler se debe permitir el alta de los datos del inquilino, se ha creado el caso de uso Alta Inquilino como una extensin de Alquiler Piso, Alquiler Local y Alquiler Edificio.Finalmente, el ltimo diagrama de caso de uso que se muestra (Figura 3) es aquel en el que se encuentra involucrado el actor secretario. Tras una visin general de las caractersticas del sistema, observamos que las tareas del secretario son:Obtencin de los distintos tipos de recibos. Obtener los informes econmicos. Generacin de los listados.Como vemos, en aras de reflejar de una forma ms meticulosa las funcionalidades que debe contemplar el sistema, todos los casos de uso genricos, con los cuales est relacionado, se desglosan en otros casos de uso. Para ello se ha utilizado la relacin de extensin en algunos casos de uso.As pues, el caso de uso de "Generar recibos" est relacionado mediante un extend con los casos de uso:? Recibos idnticos mes anterior.? Inicializar conceptos.? Modificar los del mes anterior.Este desglose se ha realizado para reflejar lo que el enunciado muestra con detalle y as poder tener una comprensin mayor de lo que el sistema debe de hacer.Por otra parte, la Gestin de movimientos bancarios se extiende en los casos de uso de Ingresos y Gastos de inmuebles, mientras que el de ingresos se extiende en ingresos de pisos e ingresos de local. De esta forma reflejamos el hecho de que los ingresos pueden ser de pisos, de locales o ambos, pero slo por esos conceptos.Figura 3:Casos de uso relacionados con el actor "Secretario empresa".Finalmente, el caso de uso de Generacin de listados se extiende en distintos casos de uso dependiendo del tipo de listado que se ha comentado en el enunciado. Con esto se indica claramente cules son especficamente las operaciones que se deben poder realizar, obteniendo, por tanto, una mayor comprensin de los requisitos que debe tener el sistema. La extensin refleja esos comportamientos opcionales que puede haber en el sistema y que no tienen por qu ser exclusivos, en el sentido de que si se realiza uno se pueden realizar los otros, cuando se generan listados.Los casos de uso que tenemos son: Inquilino por fecha, Pagos inquilino en un intervalo de tiempo, Impagos inquilino en un intervalo de tiempo, De todos los inmuebles, De todos los pisos y locales de cada edificio, De recibos pendientes.