Professional Documents
Culture Documents
La interface para completar el programa debe mostrar como la foto del ejemplo. El programa es una ventana que despliega tres botones de control. El primero carga la nueva imagen para procesar. Cuando es presentada, se abre una ventana de dialogo que permite al usuario seleccionar un archivo de imagen. Una vez que la imagen ha sido escogida, el usuario con un click puede escoger otra con el otro botn de la ms reciente imagen cargada. Cuando uno de los botones de proceso es presionado, se abre una nueva ventana que despliega la versin procesada de la imagen. Por ejemplo, si presiona el botn Requantize una ventana como la que se muestra en la otra imagen aparecer. Esta ventana despliega una versin de la imagen a 2 tonalidades negro y gris (el rol del indicador de desplazamiento determina cuantas tonalidades pueden ser usadas). Cuando el programa este completo, debe construirse una clase que despliegue la ventana con los botones de control y una clase adicional para cada una de las imgenes procesadas. Todas estas clases deben de llamar (extends) al GUIManager. La clase Histograma. Debe tambin definir una clase llamada Histograma que contenga un arreglo del nmero de pixeles que provee los datos usados para dibujar el histograma. El constructor debe crear un arreglo de 256 valores enteros. Debe incluir un loop que pueda examinar todos los elementos en el arreglo de pixeles, fijar cada uno de los 256 elementos del arreglo del histograma tal que los elementos del ndice b, que sean iguales al nmero de elementos de entradas en el arreglo de pixeles con b. La clase histograma debe proveer dos mtodos. Uno debe tomar el valor del brillo b, y regresar la posicin que b guardada en el arreglo del histograma. El otro mtodo debe regresar la longitud del arreglo del histograma. Esta labor es intenta que la funcin sea un manual. El handout provee las instrucciones detalladas de cmo construir este programa. Nos introduce en los detalles muchas libreras y mtodos, y explora una de las nuevas caractersticas del lenguaje java por si solo. Describe una nueva clse llamada SImage que soporta la manipulacin de imgenes. Nos explica como manipular tablas de valores que describen los pixeles individualmente utilizando una imagen, usando caractersticas de java al invocar a los arreglos. Adems, nos introduce a numerosas libreras e Java Swing library. Nos muestra como usar JLabels para desplegar imgenes. Nos presenta una nueva clase llamada JFileChooser. Cuando se presiona el botn para Cargar Imagen en la interface del programa, facilita usar al programa la habilidad de navegar alrededor de los archivos del sistema para encontrar los archivos de imgenes. La clsse JFileChoser hace fcil hacer esto. Finalmente, la operacin para el procesamiento de imgenes que deseamos implementar para ser controlada por los componentes del GUI como un dispositivo de desplazamiento, nos permite insertar la clase JSlIder en esta labor.
Debe ser incluida en el mtodo buttonClicked que llame a java para que despliegue la imagen cargada. Agregar las variables y la instancia SImage variable descrita arriba del programa. Correr el programa y hacer click en el botn Load Image.
S no se hace todo bien, el programa desplegara una imagen de uno de los maestros . Puedes ver el parecido familiar?. Si hacemos todo bien, notaremos que nuestra interface del programa tiene algunos inconvenientes .S se estrecha la ventana, hacindola larga o corta, puedes notar que cuando es muy pequea, no es espacio suficiente para desplegar el botn y cuando es muy larga, puedes ver el texto desplegado en la JLabel mas la imagen. Hay que hacer los siguientes cambios en la direccin de estos casos. Cambiar el texto desplegado en el JLabel a una cadena vacia (). Mete el JLabel por new JScrollPane tal que rejas puedan ser provistas cuando la ventana es muy pequea. Esto es una instruccin de la siguiente forma: contentPane.add( new JScrollPane( yourLabel)); Agregarla a la ventana. Cambiar la distribucin principal asociada con el contenido del panel esta al borde de la distribucin principal y ejecutar las tres siguientes pasos despus intentar correr el programa otra vez. o Agregar la instruccin. contentPane.setLayout( new BorederLayout() ); Para empezar el constructor del programa. Colocar JLabel al centro de la ventana que remplace el comando de agregarlo en el contenido del panel, con las instrucciones de la siguiente forma: contentPan.add( , BorderLayout.CENTER );
Cambia el comando de agregar a JPanel que contiene el botn de Load Image que el panel es colocado en el botn de la ventana (BorderLayout.SOUTH).
Corre el programa modificado. Las cosas debe verse muy bien ahora. Las nicas cuestiones pendientes es que cuando la ventana es ancha mas de lo requerido para desplegar la imagen, la imagen pude ser justificada a la izquierda propiamente que en al centro de la misma. Se puede arreglar el problema, agregando un segundo parmetro al constructor de JLabel asi como describe: New JLabel( , SwingConstats.CENTER)
Este parmetro adicional le dice a label que centre su contenido. Si se corre el programa despus de este cambio debe desplegar la imagen justo al centro.
La declaracin de la variable nos dice que agrega, le dice a java que cree un archivo chooser. Invoca el mtodo shwOpenDialog y tiene por objeto desplegar la caja de dialogo y espera la usuario a seleccionar el archivo. El parmetro New.File(System.getProperty(user.dir)) + //AllImages Provee que cuando el chooser llama a java el dialogo debe desplegarse al principio, contenida en el folder que contiene a todas las imgenes que tienes que bajar desde el curso de la pagina web ( nombre del archivo, significa que sube un nivel jerarqua de de los folders ) La invocacin es Chooser.getSectedFile().get AbsolutePath() Regresa una descripcin de los archivos seleccionados por el usuario. Cuando corras el programa, puedes notar una cosa, que se debe direccionar si deseamos que el programa slido. La caja de dialogo tiene un archivo chooser incluido que es el botn Cancela. Si el usuario presiona cancel, entonces el mtodo getSelectedFile pude no regresar una descripcin del archivo. Facilitar esta situacin, de que el mtodo showOpenDialog regres el valor indicando, en todo caso es seleccionado por el usuario. El valor regresado cuando es seleccionado es asociado con el nombre JFileChooser.APPROVE_OPTION, por eso se debe combinar la lnea que invoca showOpenDialog y el cdigo que trae a la imagen creada y tiene la siguiente forma: If ( chooser.showOpenDialog(this)==JFileChooser.APPROVE.OPTION) {
..// }
New.JLabel (100); Debemos recordar replazar la palabra 100, despus . Una mejor aproximacin es tomar ventaja del hecho de quela clase JSlider provee un mtodo llamado get Minimun y get Maximo que se usan para determinar el rango del slider Por lo que si someSlider tenia nombre de JSlider, el constructor JLabel, el constructor JLabel debe parecerse a : New JLabel( +someSlider.getMaximun()) El nico truco para crear esta interfaz del programa en traer