unidad iii lp ii uigv

55
Lenguaje de Programación II - Unidad III Sally Torres A. / Yuliana Jáuregui R. 130 Sistema a Distancia Tercera unidad Programación Visual, gestores de errores y archivos Sumario Comprende y aplica, la programación visual, los gestores de errores y la persistencia, diseña y desarrolla, a un nivel eficiente, la construcción de programas visuales, valorando la importancia dentro de su ámbito profesional. Interfaz gráfica de usuario – GUI Arreglos de objetos con interfaz gráfica Gestor de errores y archivos

Upload: lester-chc

Post on 06-Nov-2015

226 views

Category:

Documents


2 download

DESCRIPTION

gg

TRANSCRIPT

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    130 Sistema a Distancia

    Tercera unidad

    Programacin Visual, gestores de errores y archivos

    Sumario

    Comprende y aplica, la programacin visual, los gestores de errores y la persistencia, disea y desarrolla, a un nivel eficiente, la construccin de programas visuales, valorando la importancia dentro de su mbito profesional. Interfaz grfica de usuario GUI Arreglos de objetos con interfaz grfica Gestor de errores y archivos

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    131 Sistema a Distancia

    Leccin 9

    Interfaz Grfica de Usuario - GUI

    9.1. Componentes y Contenedores Una interfaz grfica est construida en base a elementos grficos como son los componentes, por ejemplo: botones, barras de desplazamiento, etiquetas, listas, cajas de seleccin, campos de texto, etc. Los componentes permiten al usuario interactuar con la aplicacin proporcionando informacin desde el programa al usuario. Los componentes no se encuentran aislados, sino agrupados dentro de contenedores. Los contenedores como su nombre lo dice contienen y organizan la situacin de los componentes; adems, los contenedores son tambin componentes y como tales pueden ser situados dentro de otros contenedores. Los componentes y los contenedores tienen el cdigo necesario para el control de eventos, cambiar la forma del cursor o modificar el icono de la aplicacin.

    9.2. Los paquetes GUI de Java

    Java cuenta con dos paquetes para el manejo de interfaz grfica: El paquete AWT (Abstract Window Toolkit), que contiene los componentes

    bsicos necesarios para crear un GUI para aplicaciones y applets de Java. En el AWT, todos los componentes de la interface de usuario son instancias de la clase Component o uno de sus subtipos y todos los contenedores son instancias de la clase Container o uno de sus subtipos.

    El paquete swing, que contiene los componentes necesarios para crear un GUI ampliando la funcionalidad del paquete AWT.

    9.3. El paquete swing

    Swing es un API que incluye un conjunto de componentes que crean aplicaciones grficas en Java, con una apariencia visual independiente de la plataforma. Pero aunque swing supone un salto hacia delante, muchos de sus componentes heredan de los equivalentes del paquete AWT, siendo el mismo el modelo de eventos para ambos. 9.3.1. Los componentes de swing

    Swing est compuesto por nueve paquetes y cientos de clases e interfases. La clase padre de la jerarqua se denomina javax.swing. El paquete javax.swing es la base de toda la jerarqua swing. Donde encontramos la mayoria de componente grficos, y la definicin de numerosos interfaces que pueden ser usados para extender la jerarqua. Los componentes de swing, organizados en una jerarqua derivan de la clase Jcomponent del paquete javax.swing. Jcomponet, que es subclase de java.awt.container siendo de esta manera componente y contenedor a la vez. Se puede decir que los componentes de swing se dividen en dos grupos: los que guardan una estrecha relacin con los de AWT y los que incluyen nuevas funcionalidades o son completamente nuevos.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    132 Sistema a Distancia

    A continuacin se muestra una tabla con los paquetes que forman el paquete javax.Swing.

    Paquete Descripcin Javax.Swing Es el paquete central de Swing que contiene

    componentes, adaptadores e interfaces. Javax.swing.border Incluye la interfaz Border y sus clases, que definen la

    forma en la que se dibujarn los bordes en pantalla. Javax.swing.ColorChooser Clases para el componente que permite la seleccin de

    colores. Javax.swing.event Contienen los tipos de eventos y listener especficos de

    los componentes Swing. Adems, los componentes pueden generar sus propios tipos.

    Javax.swing.filechooser Clases para el componente que permite la navegacin por el sistema de archivo y seleccin del mismo.

    Javax.swing.palf.* Contienen las clases de los interfaces de usuario que implementan las diferentes apariencias de los componentes swing. Dentro se incluyen los paquetes: basic, metal, multi.

    Javax.swing.table Clases e interface del componente Jtable Javax.swing.text Clases que sirven de soporte al tratamiento de

    documentos en swing. Proporcionan control sobre el resaltado, formato y dems aspectos del texto.

    Javax.swing.text.html.* Clases que soporte de la versin 3.2 de HTML. Incluye un visualizador y un parser de HTML.

    Javax.swing.text.rtf Clases de visualizador de texto en formato RTF(rich text editro).

    Javax.swing.tree Incluye las clases de uno de los nuevos components de swing: el Jtree.

    Javax.swing.undo Proporcionan soporte para las operaciones de hacer/deshacer dentro de una interfaz grfica de usuario.

    Javax.accessibility Clases de accesibilidad que permiten facilitar el uso de la aplicacin a personas con discapacidades.

    Tabla 9.1. Paquetes que forman el paquete javax.Swing.

    9.3.2. Caracterstica de los componentes Swing.

    Se tiene las siguientes caractersticas: Implementa de nuevo todos los componentes grficos existente en el AWT,

    hacindolos mas ligeros. Aade nuevas y tiles funcionalidades a los componentes, tales como la

    posibilidad de presentar imgenes o animaciones. Est enteramente basado en AWT y ms especficamente en el soporte para

    interfaz de usuario ligero. La reimplementacin de todos los componentes grficos existentes en AWT

    signific renombrarlos anteponindoles la letra J. As por ejemplo en vez de Button, tenemos JButton.

    Otro mejora importante es que ahora todos los componentes pueden presentar una pequea leyenda de texto con una breve explicacin, que es conocida como tooltip.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    133 Sistema a Distancia

    9.3.3. Descripcin de algunos componentes Swing.

    Se da una descripcin breve de cada componente por la diversidad de mtodos que contienen. JFrame: se trata de la implementacin de la clase Frame aadiendo nuevas

    funcionalidades y una nueva filosofa, ya que ahora un Frame contiene varios tipos de paneles.

    JPanel: es el nuevo contenedor bsico de componentes grficos. JScrollPane: esta nueva implementacin de un panel con barra de

    desplazamiento no se limita slo a proporcionar barras de desplazamiento en caso de que los componentes que contengan no entren en l rea de visualizacin, sino que tambin se encarga de proporcionar barras de desplazamiento a todo el resto de componentes grficos existente.

    JApplet: Se trata de la reimplementacin de la clase applet para que sta pueda aprovechar todas las nuevas caractersticas existentes.

    JButton: botn que adems de texto puede contener imgenes en cualquier posicin en relacin con el texto.

    JToggleButton: se trata de una clase que no tiene equivalentes en AWT. Representa un botn que se mantiene presionado aunque dejemos de presionar con nuestro ratn sobre l, pero visualmente no se difiere de un Jbutton cuando no est activado.

    JLabel: etiqueta de texto que puede contener imgenes en cualquier posicin en relacin con el texto.

    JTextField: Componente que sirve para conseguir la entrada de texto por parte del usuario.

    JTextPane: se trata tambin de un panel para visualizar texto, con la salvedad de que tiene la capacidad de mutar en relacin al tipo de texto que se desee mostrar para poder visualizarlo correctamente.

    JList: presenta una lista de elementos de entre los que se puede elegir uno o varios simultneamente.

    JDesktopPane: se trata de un panel base para el desarrollo de aplicaciones MDI. JInternalFrame: este panel no es una ventana en s, sino que simula una

    ventana interior a un JdesktopPane. Como ventana interior puede ser movida, cerrada, o iconizada.

    JTable: este componente presenta una rejilla en la que se puede colocar cualquier componente swing.

    JCheckBox: es similar al componente checkbox que encontramos en cualquier lenguaje y que permite mostrar al usuario si la opcin est seleccionada o no.

    JPasswordField: se encuentra justo por debajo de Jtextfield en la jerarqua de componentes, y permite la edicin de texto sin realizar un eco de los caracteres tecleados en pantalla, que son sustituidos por un carcter *.

    JTextArea: hereda de JtextComponet, con la diferencia es que un rea de texto permite la edicin de multiples lneas. Hay que tener en cuenta que si queremos tener la capacidad de desplazarnos a lo largo de un texto que no cabe en el componente tendremos que colocar el JtextArea en un JscrollPane.

    JProgressBar: las barras de progreso permiten ver de forma grfica la evolucin de una tarea. Normalmente el avance se mide en porcentaje y la barra se acompaa de la visualizacin en texto del valor de dicho porcentaje. Java incorpora otra posibilidad para esta tarea: un monitor de progreso, que permite ver el avance de un proceso de forma ms sencilla que las barras. Adems al ser mostradas en un cuadro de dialogo, el usuario puede cerrarlas en cualquier momento e incluso llegar a cancelar el proceso.

    JComboBox: es similar al choice de AWT. Dispone de una lista desplegable de posibles valores, pero si no encontramos entre ellos el valor que buscamos, podemos teclearlo(si hemos habilitado la opcin con setEditable(true)). Este control de swing presenta una facilidad aadida: cuando pulsamos la inicial de

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    134 Sistema a Distancia

    la opcin que buscamos, nos lleva directamente al primer trmino de la lista que empiece por dicha letra.

    9.4. Jerarqua de los contenedores La raz jerrquica de los contenedores en el diseo de una interfaz grfica esta definido por el marco de la ventana (JFrame, JAplet, JDialog). A continuacin se define un objeto JPanel de nivel intermedio, pudiendo adicionar a este el contenedor raz, finalmente se adicionan los controles que se visualizar en la interfaz grfica.

    class Ejemplo extends JFrame implements ActionListener {

    JButton btnAceptar = new JButton("Aceptar"); JPanel pnlIntermedio = new JPanel(); public Boton( ) {

    pane.add(btnAceptar); setContentPane(pnlIntermedio);

    }

    9.5. Layouts (manejadores de composicin)

    Los layout managers o manejadores de composicin, ayudan a administrar la posicin de los diversos componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrn los componentes sobre un contenedor. 9.5.1. Tipos de layouts

    Entre algunos layouts tenemos: FlowLayout: Deposita componentes en forma parecidad a como se organiza las palabras en una pgina, de izquierda a derecha hasta que ya no haya espacio, y contina en el regln siguiente. Si se desea variar la alineacin de los componentes se utiliza, FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER. import java.awt.*; import java.applet.Applet; public class AwtFlow extends Applet { Button boton1,boton2,boton3; public void init() {

    boton1 = new Button( "Aceptar" ); boton2 = new Button( "Abrir" );

    Contenedor raz (ventana)

    Componente

    Contenedor intermedio (Panel)

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    135 Sistema a Distancia

    boton3 = new Button( "Cerrar" ); add( boton1 );

    add( boton2 ); add( boton3 );

    } } BorderLayout:Divide el contenedor en 5 secciones, norte, sur, este oeste y centro.

    import java.awt.*; import java.applet.Applet; public class AwtBord extends Applet { Button botonN,botonS,botonE,botonO,botonC; public void init() { setLayout( new BorderLayout() ); botonN = new Button( "Norte" );

    botonS = new Button( "Sur" ); botonE = new Button( "Este" ); botonO = new Button( "Oeste" ); botonC = new Button( "Centro" ); add( "Norte",botonN );

    add( "Sur",botonS ); add( "Este",botonE ); add( "Oeste",botonO ); add( "Centro",botonC );

    } } GridLayout: Acomoda los componentes dentro de una cuadrcula de reglones y columnas.

    import java.awt.*; import java.applet.Applet; public class AwtGrid extends Applet { Button boton1,boton2,boton3,boton4,boton5,boton6; public void init() {

    setLayout( new GridLayout( 3,2 ) ); boton1 = new Button( "1" );

    boton2 = new Button( "2" ); boton3 = new Button( "3" ); boton4 = new Button( "4" ); boton5 = new Button( "5" ); boton6 = new Button( "6" ); add( boton1 );

    add( boton2 ); add( boton3 ); add( boton4 ); add( boton5 ); add( boton6 ); } } 9.5.2. Listeners (oyentes)

    Es una interfaz que permite sentir los eventos (clic del mause, presin de una tecla del teclado, etc.) que se realizan en un applets o en una aplicacin. Para

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    136 Sistema a Distancia

    implemetar estos eventos se invoca al paquete java.awt.events que provee de un conjunto de clases que implementan todos los mtodos de las interfaces Listeneres, para esto solo ser necesario crear subclases que sobrescriban los mtodos deseados de cada Listeners. La siguiente tabla muestra los principales Listeners para componentes Swing

    Interface Paquete Mtodos

    ActionListener java.awt.event actionPerformed CaretListener javax.swing.event caretUpdate ChangeListener javax.swing.event stateChanged ComponentListener java.awt.event componentHidden

    componentMoved componentResized componentShown

    ContainerListener java.awt.event componentAdded componentRemoved

    DocumentListener javax.swing.event changedUpdate insertUpdate removeUpdate

    FocusListener java.awt.event focusGained focusLost

    InternalFrameListener javax.swing.event internalFrameActivated internalFrameClosed internalFrameClosing internalFrameDeactivated internalFrameDeiconified internalFrameIconified internalFrameOpened

    ItemListener java.awt.event itemStateChanged KeyListener java.awt.event keyPressed

    keyReleased keyTyped

    ListSelectionListener javax.swing.event valueChanged MouseListener java.awt.event

    javax.swing.event mouseClicked mouseEntered mouseExited mousePressed mouseReleased

    MouseMotionListener java.awt.event javax.swing.event

    mouseDragged mouseMoved

    UndoableEditListener javax.swing.event undoableEditHappened WindowListener java.awt.event windowActivated

    windowClosed windowClosing windowDeactivated windowDeiconified windowIconified windowOpened

    Tabla 9.1. Listeners del paquete swing.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    137 Sistema a Distancia

    Laboratorio Nro 9 Objetivos

    Aprender a manejar diversos componentes y contenedores del paquete swing. Aprender a identificar el uso adecuado de un Listeners.

    Orden de Realizacin del Laboratorio

    1. Cree un nuevo proyecto con el nombre Proyecto_9.

    2. Cree un paquete con el nombre de interfaz_grfica. Ejemplo 1: Calcular el producto de dos nmeros ingresados. Construyendo la siguiente interfaz.

    3. Cree una clase Ejemplo1 que contenga el mtodo main y herede la clase

    contenedora JFrame y digite el siguiente fragmento de programa.

    public class Ejemplo1 extends JFrame{ JLabel lblNumero1=new JLabel("Ingresar 1er nmero: "); JLabel lblNumero2=new JLabel("Ingresar 2do nmero: "); JLabel lblProducto=new JLabel("El producto es: "); JTextField txtNumero1=new JTextField(); JTextField txtNumero2=new JTextField(); JTextField txtProducto=new JTextField(); JButton btnCalcular=new JButton("Calcular"); JButton btnNuevo=new JButton("Nuevo"); JButton btnSalir=new JButton("Salir"); JPanel pnlIntermedio=new JPanel(); }

    Este cdigo nicamente permite crear objetos que se usaran en la interfaz los cuales corresponden al paquete swing. Si usted ejecuta el programa aun no podr visualizar la interfaz pedida.

    Recuerde que de acuerdo a la jerarqua de componentes se requiere de un contenedor intermedio que en este caso es el objeto pnlIntermedio de la clase JPanel.

    4. Dentro del constructor de la clase y digite el siguiente fragmento de programa.

    Objetos de la clase JButton

    Objetos de la clase JLabel

    Objetos de la clase JTextField

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    138 Sistema a Distancia

    public Ejemplo1(){ //el siguiente cdigo coloca a los objetos creados sobre el contenedor intermedio pnlIntermedio.add(lblNumero1); pnlIntermedio.add(lblNumero2); pnlIntermedio.add(lblProducto); pnlIntermedio.add(txtNumero1); pnlIntermedio.add(txtNumero2); pnlIntermedio.add(txtProducto); pnlIntermedio.add(btnCalcular); pnlIntermedio.add(btnNuevo); pnlIntermedio.add(btnSalir); //coloca al contenedor intermedio sobre la clase contenedores en nuestro caso Ejemplo1 setContentPane(pnlIntermedio); } Si usted ejecuta el programa aun no podr visualizar la interfaz pedida.

    5. En el mtodo main digite el siguiente fragmento de programa, el cual permite

    visualizar la interfaz de la clase Ejemplo1.

    public static void main(String[] args) { JFrame x=new Ejemplo1(); x.setVisible(true); x.setSize(420, 200); } Pero la interfaz se muestra de la siguiente forma, esto debido al layout.

    6. Para fijar la interfaz como se solicita en el ejemplo debe deshabilitar el layout digitando el siguiente cdigo en el constrcutor. public Ejemplo1(){ //Deshabilita el layout pnlIntermedio.setLayout(null); pnlIntermedio.add(lblNumero1); pnlIntermedio.add(lblNumero2); pnlIntermedio.add(lblProducto); pnlIntermedio.add(txtNumero1); pnlIntermedio.add(txtNumero2); pnlIntermedio.add(txtProducto); pnlIntermedio.add(btnCalcular); pnlIntermedio.add(btnNuevo); pnlIntermedio.add(btnSalir); //coloca al contenedor intermedio sobre la clase contenedores en nuestro caso Ejemplo1 setContentPane(pnlIntermedio); }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    139 Sistema a Distancia

    Si usted ejecuta el programa no podr visualizar la interfaz pedida debido a que sin la presencia del layout, los componentes no saben como administrar su disposicin dentro del contenedor.

    7. Para determinar la disposicin de los componentes se emplea el mtodo setBounds(x, y, largo, ancho) que tiene cuatro parmetros de los cuales los dos primeros se refieren a las coordenadas superiores donde se ubicar el componente y los otros dos parmetros indican el largo y ancho que tendr el componente. Digite este mtodo en el constructor.

    public Ejemplo1(){ pnlIntermedio.setLayout(null); pnlIntermedio.add(lblNumero1); pnlIntermedio.add(lblNumero2); pnlIntermedio.add(lblProducto); pnlIntermedio.add(txtNumero1); pnlIntermedio.add(txtNumero2); pnlIntermedio.add(txtProducto); pnlIntermedio.add(btnCalcular); pnlIntermedio.add(btnNuevo); pnlIntermedio.add(btnSalir); lblNumero1.setBounds(20, 30, 130, 25); lblNumero2.setBounds(20, 70, 130, 25); lblProducto.setBounds(20, 110, 130, 25); txtNumero1.setBounds(170, 30, 100, 25); txtNumero2.setBounds(170, 70, 100, 25); txtProducto.setBounds(170, 110, 100, 25); btnCalcular.setBounds(290, 30, 100, 25); btnNuevo.setBounds(290, 70, 100, 25); btnSalir.setBounds(290, 110, 100, 25); setContentPane(pnlIntermedio); } Si usted ejecuta el programa podr visualizar la interfaz pedida pero no podr realizarse los clculos.

    8. Para que la interfaz realice los clculos ser necesario implementar una clase listener, para este caso se usa la clase ActionListener la cual reconoce el evento que se realiza sobre los botones, en este caso un clic del mouse.

    public class Ejemplo1 extends JFrame implements ActionListener{ }

    9. Al digitar la implementacin del ActionListener el compilador nos muestra un

    error, esto porque la clase ActionListener es una clase abstracta y como tal tiene un mtodo abstracto que se debe implementar, este mtodo es el mtodo actionPerformed, entonces digite el siguiente fragmento de cdigo dentro de la clase Ejemplo1. public void actionPerformed(ActionEvent e){ if(e.getSource()==btnCalcular) calcularProducto(); else if(e.getSource()==btnNuevo) borrarDatos(); else if(e.getSource()==btnSalir) System.exit(0);

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    140 Sistema a Distancia

    } public void calcularProducto(){ double n1, n2, p; n1=Double.parseDouble(txtNumero1.getText()); n2=Double.parseDouble(txtNumero2.getText()); p=n1*n2; txtProducto.setText(p+""); } public void borrarDatos(){ txtNumero1.setText(""); txtNumero2.setText(""); txtProducto.setText(""); txtNumero1.requestFocus(); } El mtodo getSource() identifica sobre que objeto se realiza el evento. Si usted ejecuta el programa aun no podr realizarse los clculos, esto es, porque necesitamos relacionar la clase listeners con los componentes que reciben los eventos.

    10. Para relacionar la clase ActionListener con los componentes que recibe el evento digite el siguiente cdigo. public void conectar(){ btnCalcular.addActionListener(this); btnNuevo.addActionListener(this); btnSalir.addActionListener(this); } Este mtodo conectar debe ser llamado desde el constructor.

    11. Finalmente el programa quedar de la siguiente forma:

    import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Ejemplo1 extends JFrame implements ActionListener{ JLabel lblNumero1=new JLabel("Ingresar 1er nmero: "); JLabel lblNumero2=new JLabel("Ingresar 2do nmero: "); JLabel lblProducto=new JLabel("El producto es: "); JTextField txtNumero1=new JTextField(); JTextField txtNumero2=new JTextField(); JTextField txtProducto=new JTextField(); JButton btnCalcular=new JButton("Calcular"); JButton btnNuevo=new JButton("Nuevo"); JButton btnSalir=new JButton("Salir"); JPanel pnlIntermedio=new JPanel(); public Ejemplo1(){ pnlIntermedio.setLayout(null); pnlIntermedio.add(lblNumero1);

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    141 Sistema a Distancia

    pnlIntermedio.add(lblNumero2); pnlIntermedio.add(lblProducto); pnlIntermedio.add(txtNumero1); pnlIntermedio.add(txtNumero2); pnlIntermedio.add(txtProducto); pnlIntermedio.add(btnCalcular); pnlIntermedio.add(btnNuevo); pnlIntermedio.add(btnSalir); lblNumero1.setBounds(20, 30, 130, 25); lblNumero2.setBounds(20, 70, 130, 25); lblProducto.setBounds(20, 110, 130, 25); txtNumero1.setBounds(170, 30, 100, 25); txtNumero2.setBounds(170, 70, 100, 25); txtProducto.setBounds(170, 110, 100, 25); btnCalcular.setBounds(290, 30, 100, 25); btnNuevo.setBounds(290, 70, 100, 25); btnSalir.setBounds(290, 110, 100, 25); setContentPane(pnlIntermedio); conectar(); } public void conectar(){ btnCalcular.addActionListener(this); btnNuevo.addActionListener(this); btnSalir.addActionListener(this); } public void actionPerformed(ActionEvent e){ if(e.getSource()==btnCalcular) calcularProducto(); else if(e.getSource()==btnNuevo) borrarDatos(); else if(e.getSource()==btnSalir) System.exit(0); } public void calcularProducto(){ double n1, n2, p; n1=Double.parseDouble(txtNumero1.getText()); n2=Double.parseDouble(txtNumero2.getText()); p=n1*n2; txtProducto.setText(p+""); } public void borrarDatos(){ txtNumero1.setText(""); txtNumero2.setText(""); txtProducto.setText(""); txtNumero1.requestFocus(); } public static void main(String[] args) { JFrame x=new Ejemplo1(); x.setVisible(true); x.setSize(420, 200); } }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    142 Sistema a Distancia

    Ejemplo 2: Ingresar un nmero y calcular su cuadrado.

    12. Cree una clase Ejemplo2 que muestre un formulario JFrame. Para este caso en Netbeans haga un clic derecho del mouse sobre el proyecto Proyecto_9 y del men que se desplega elija JFrame Form de esta manera se mostrar una ventana para el cdigo y otra para el diseo de la interfaz.

    Figura 9.1. Ventana para digitar el cdigo de un formulario de tipo JFrame

    Figura 9.2. Ventana para disear la interfaz de un formulario de tipo JFrame

    La ventana de diseo muestra la ventana paleta desde donde se arratrar los objetos que se usarn en la interfaz y la ventana propiedades que muestra las propiedades de cada objeto de la interfaz.

    13. En la ventana diseo arrastrar los objetos necesario para disear la interfaz que

    solicita el ejemplo.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    143 Sistema a Distancia

    Figura 9.3. Ventana de diseo de la interfaz

    14. Seleccione objeto por objeto del diseo de la interfaz y en la ventana propiedades cambie la propiedad text, el cual permite colocar el texto que se ver en la interfaz.

    Figura 9.4. Propiedades del objeto jbutton1 seleccionado

    15. Adems en la ventana propiedades seleccione la ficha Code y all elija la propiedad Variable Name para colocarle un nombre a cada objeto, el nombre del objeto debe hacer referencia al uso que se va a dar adems es recomendable que los tres primeros caracteres hagan alusin a la clase al cual pertenece. Por ejemplo si es un botn de la clase JButton un nombre puede ser btnSuma, si es una cada de texto de la clase JTextField un nombre puede ser txtNumero, si es un objeto de la clase JComboBox, un nombre puede se cbxCategoria y asi sucesivamente.

    Figura 9.5. Ficha Code de la ventana de Propiedades

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    144 Sistema a Distancia

    Todo lo que se hizo en el diseo ha autogenerado cdigo que se visualiza dentro del mtodo initComponent, adems de la creacin de los objeto, este cdigo no puede ser borrado ni modificado desde la ventana de cdigo.

    16. Para implementar la clase ActionListeners haga un clic derecho del mouse sobre

    el botn Calcular elija del men que se meustra la opcin Events a continuacin de muestras todos los listeners para ese objeto con sus respectivo mtodos, en nuestro caso elegimos Action y luego actionPerformed.

    Figura 9.6. Selccin de un listener Esta accin nos traslada a la ventana de cdigo donde digitamos el siguiente fragmento de cdigo.

    17. Estando el la ventana de cdigo digite el siguiente fragmento de cdigo private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { calcularCuadrado(); } public void calcularCuadrado(){ double nro, cuad; nro=Double.parseDouble(txtNumero.getText()); cuad=Math.pow(nro, 2); txtCuadrado.setText(cuad+""); }

    Donde:

    La lnea: double nro, cuad; declara dos variables de tipo real.

    La lnea: nro=Double.parseDouble(txtNumero.getText()); obtiene el valor ingresado en el objeto txtNumero mediante el mtodo getText() y lo guarda en la variable nro. La lnea: cuad=Math.pow(nro, 2); calcula el cuadrado del nmero invocando al mtodo pow() de la clase Math. La lnea txtCuadrado.setText(cuad+""); muestra en el objeto txtCuadrado el cuadrado calculado haciendo uso del mtodo setText() el cual imprime un valor de tipo cadena motivo por el cual ha sido necesario concatenar una cadena vacia a la variable cuad para convertirlo a cadena.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    145 Sistema a Distancia

    18. Compile, ejectelo y pruebe su correcto funcionamiento Ejemplo 3: Calcular el sueldo de un empleado que trabaja por horas, la tarifa de cada hora depende de la categora:

    Categora Tarifa(S/.) A B C

    30.00 25.00 20.00

    Adems, del total de ingresos se le descuenta 7% por seguro. 19. Cree una clase Ejemplo3 de tipo JFrame Form y obtenga la siguiente interfaz,

    considere que cuando se seleccione una categora de forma automtica se muestre la tarifa correspondiente:

    Considere los siguientes objetos componentes:

    JLabel : lblCategora, lblTarifa, lblHoras JTextField : txtTarifa, txtHoras JComboBox : cbxCategora JButton : btnCalcular, btnNuevo, btnCerrar JTextArea : txtResultados

    20. En la ventana de cdigo digite el siguiente cdigo, implemetando los listeners

    Item sobre el objeto cbxCategoria y el listeners Action sobre los objetos btnCalcular, btnBorrar y btnCerrar, para esto recuerde que estando en la ventana de diseo debe hacer un clic derecho del mouse sobre el objeto, seleccionar Events y luego el listener correspondiente:

    public class Ejemplo3 extends javax.swing.JFrame { public Ejemplo3() { initComponents(); } private void initComponents() { } private void cbxCategoriaItemStateChanged(java.awt.event.ItemEvent evt) { mostrarTarifa(); } private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { calcularSueldo(); } private void btnBorrarActionPerformed(java.awt.event.ActionEvent evt) { cbxCategoria.setSelectedIndex(0);

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    146 Sistema a Distancia

    txtTarifa.setText(""); txtHoras.setText(""); txtResultados.setText(""); } private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } public void calcularSueldo(){ double tarifa, sueldo, descuento; int horas; tarifa = Double.parseDouble(txtTarifa.getText()); horas = Integer.parseInt(txtHoras.getText()); sueldo = tarifa * horas; txtResultados.append("El sueldo bruto es: "+sueldo+"\n"); descuento = 0.07*sueldo; sueldo = sueldo - descuento; txtResultados.append("El descuento es: "+descuento+"\n"); txtResultados.append("El sueldo neto es: "+sueldo+"\n"); } public void mostrarTarifa(){ char cat; cat=cbxCategoria.getSelectedItem().toString().charAt(0); switch(cat){ case 'A': txtTarifa.setText("30.00"); break; case 'B': txtTarifa.setText("25.00"); break; case 'C': txtTarifa.setText("20.00"); break; } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Ejemplo3().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btnBorrar; private javax.swing.JButton btnCalcular; private javax.swing.JButton btnCerrar; private javax.swing.JComboBox cbxCategoria; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblCategoria; private javax.swing.JLabel lblHoras; private javax.swing.JLabel lblTarifa; private javax.swing.JTextField txtHoras; private javax.swing.JTextArea txtResultados; private javax.swing.JTextField txtTarifa; } Parte de este cdigo esta autogenerado. Los comboBox tiene ndice e tem como un vector, de esta manera su ndice se inicia en 0. Mtodos empleados: setSelectedIndex(int indice): coloca o muestra en el objeto que lo invoca el

    tem cuyo ndice se indica como parmetro del mtodo.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    147 Sistema a Distancia

    setText(String cadena): coloca o muestra un texto en el objeto que lo invoca.

    getSelectedItem(): obtiene el tem de un comboBox, retornando un valor de tipo object, que en nuestro ejemplo esta siendo transformado a cadena mediante el mtodo toString() y luego es transformado a carcter mediante el mtodo charAt().

    append(String cadena): adiciona una cadena de caracteres en un textArea. La diferencia con el setText es que este primero borrar para luego adicionar un texto, en cambio append solo adiciona.

    Ejemplo 4: Disear un programa donde se ingrese una cantidad (el cual indica los N primeros nmeros naturales), luego seleccione a travs de un JCheckBox la operacin o las operaciones a realizar: suma total, suma de los cuadrados, suma de los cubos. Mostrar para cada caso la serie y el resultado de la suma. 21. Cree una clase Ejemplo4 de tipo JFrame Form y obtenga la siguiente interfaz: Considere los siguientes objetos componentes:

    JLabel : lblNumero JTextField : txtNumero JCheckBox : ckbSuma, ckbCuadrado, ckbCubo JButton : btnAceptar, btnCerrar JTextArea : txtResultado

    22. En la ventana de cdigo digite el siguiente cdigo, implemetando el listeners

    Action sobre los objetos btnAceptar y btnCerrar: public class Ejemplo4 extends javax.swing.JFrame { public Ejemplo4() { initComponents(); } private void initComponents() { } private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { realizarSumas(); } private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { nuevosDatos(); } private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } public void nuevosDatos(){ txtNumero.setText(""); ckbSuma.setSelected(false);

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    148 Sistema a Distancia

    ckbCuadrado.setSelected(false); ckbCubo.setSelected(false); txtResultado.setText(""); txtNumero.requestFocus(); } public void realizarSumas(){ txtResultado.setText(""); int nro; nro=Integer.parseInt(txtNumero.getText()); if(ckbSuma.isSelected()==true) calcularSuma(nro, 1); if(ckbCuadrado.isSelected()==true) calcularSuma(nro, 2); if(ckbCubo.isSelected()==true) calcularSuma(nro, 3); } public void calcularSuma(int n, int x){ int suma=1, ter; txtResultado.append("1"); for(int i=2; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    149 Sistema a Distancia

    Condicin Incremento (%) Soltero Casado Viudo

    0 10 15

    Adems puede tener los siguientes descuentos dependiendo a la pertenencia o no de alguna asociacin:

    Asociacin Descuento (S/.) Sindicato

    Cooperativa Seguro

    20.00 15.00 7.50

    23. Cree una clase Ejemplo5 de tipo JFrame Form y obtenga la siguiente interfaz:

    Considere los siguientes objetos componentes: JLabel : lblSueldo, lblCondicion, lblAgrupaciones JTextField : txtSueldo JCheckBox : ckbSindicato, ckbCooperativa, ckbSeguro JRadioButton : rbtSoltero, rbtCasado, rbtViudo JButton : btnAceptar, btnNuevo, btnCerrar, btnSalir JTextArea : txtResultado JButtonGroup : btgCondicion

    El objeto de la clase JButtonGroup no se visualiza en la interfaz pero si en la ventana Inspector que se muestra a nuestro lado izquierdo, sirve para agrupar los radioButton, para esto seleccione cada radioButton y en la ventana propiedades ubique la propiedad buttonGroup y elija en este el JButtonGroup que ha creado.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    150 Sistema a Distancia

    24. En la ventana de cdigo digite el siguiente cdigo, implemetando el listeners Action sobre los objetos btnAceptar, btnNuevo, btnCerrar y, btnSalir: public class Ejemplo5 extends javax.swing.JFrame { public Ejemplo5() { initComponents(); rdbSoltero.setSelected(true); } private void initComponents() { } private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { realizarCalcular(); } private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { nuevosDatos(); } private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } public void nuevosDatos(){ txtSueldo.setText(""); rdbSoltero.setSelected(true); ckbSindicato.setSelected(false); ckbCooperativa.setSelected(false); ckbSeguro.setSelected(false); txtResultado.setText(""); txtSueldo.requestFocus(); } public void realizarCalcular(){ double sueldo, incremento, descuento1=0, descuento2=0, descuento3=0; sueldo=Double.parseDouble(txtSueldo.getText()); txtResultado.append("Sueldo bruto: "+sueldo+"\n"); if(rdbSoltero.isSelected()==true) incremento=0; else if(rdbCasado.isSelected()==true) incremento=0.10*sueldo; else incremento=0.15*sueldo; if(ckbSindicato.isSelected()==true){ descuento1=20.00; txtResultado.append("Descuento por sindicato: "+descuento1+"\n"); } if(ckbCooperativa.isSelected()==true){ descuento2=15.00; txtResultado.append("Descuento por cooperativa: "+descuento2+"\n"); } if(ckbSeguro.isSelected()==true){ descuento3=7.5; txtResultado.append("Descuento por seguro: "+descuento3+"\n"); } sueldo=sueldo+incremento-(descuento1+descuento2+descuento3); txtResultado.append("Incremento: "+incremento+"\n"); txtResultado.append("Sueldo neto: "+sueldo+"\n");

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    151 Sistema a Distancia

    } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Ejemplo5().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.ButtonGroup btgCondicion; private javax.swing.JButton btnAceptar; private javax.swing.JButton btnCerrar; private javax.swing.JButton btnNuevo; private javax.swing.JButton btnSalir; private javax.swing.JCheckBox ckbCooperativa; private javax.swing.JCheckBox ckbSeguro; private javax.swing.JCheckBox ckbSindicato; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblAgrupaciones; private javax.swing.JLabel lblCondicion; private javax.swing.JLabel lblSueldo; private javax.swing.JRadioButton rdbCasado; private javax.swing.JRadioButton rdbSoltero; private javax.swing.JRadioButton rdbViudo; private javax.swing.JTextArea txtResultado; private javax.swing.JTextField txtSueldo; } Parte de este cdigo esta autogenerado. En un grupo de radioButton solo uno de ellos debe ser seleccionado razn por la cual se usa un if anidado para manipular los datos de estos objetos, en cambio en un grupo de checkBox se puede seleccionar uno, parte o todos los objetos por lo que se usa if simple para manipular sus datos. Mtodos empleados: dispose(): finaliza la ejecucin de la clase. System.exit(0): finaliza la ejecucin del proyecto.

    Ejemplo 6: Elaborar un programa que registre los nombres de los alumnos de un saln de clase en una lista a travs del botn Registrar el cual debe estar en un inicio deshabilitado y solamente se habilitar cuando se haya digitado el nombre de un alumno. Adems tendr un botn Eliminar que tambin estar deshabilitado y se habilitar cuando se seleccione un alumno de la lista. 25. Cree una clase Ejemplo6 de tipo JFrame Form y obtenga la siguiente interfaz:

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    152 Sistema a Distancia

    Considere los siguientes objetos componentes: JLabel : lblAlumno JTextField : txtAlumno JList : lstAlumno JButton : btnRegistra, btnEliminar, btnCerrar, btnSalir

    Para dehabilitar los botones Registrar y Eliminar quite el check de la propiedad enabled, que se muestra en la ventan de propiedades.

    26. En la ventana de cdigo digite el siguiente cdigo, implemetando el listener

    Action sobre los objetos btnRegistra, btnEliminar, btnCerrar y btnSalir, el listener key (keyPressed, keyTyped) sobre el objeto lblAlumno y el listener ListSelection sobre el objeto lstAlumno. import javax.swing.DefaultListModel; import javax.swing.JButton; public class Ejemplo6 extends javax.swing.JFrame { DefaultListModel x=new DefaultListModel(); public Ejemplo6() { initComponents(); } private void initComponents() { } private void btnRegistrarActionPerformed(java.awt.event.ActionEvent evt) { registrarAlumno(); } private void txtAlumnoKeyTyped(java.awt.event.KeyEvent evt) { habilitarBoton(btnRegistrar); } private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { eliminarAlumno(); } private void lstAlumnoValueChanged(javax.swing.event.ListSelectionEvent evt) { habilitarBoton(btnEliminar); } private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } private void txtAlumnoKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) registrarAlumno(); } public void habilitarBoton(JButton boton){ boton.setEnabled(true); } public void eliminarAlumno(){ int indice; indice=lstAlumno.getSelectedIndex(); x.remove(indice); btnEliminar.setEnabled(false); } public void registrarAlumno(){

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    153 Sistema a Distancia

    String nom; nom=txtAlumno.getText(); x.addElement(nom); lstAlumno.setModel(x); txtAlumno.setText(""); txtAlumno.requestFocus(); btnRegistrar.setEnabled(false); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Ejemplo6().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btnCerrar; private javax.swing.JButton btnEliminar; private javax.swing.JButton btnRegistrar; private javax.swing.JButton btnSalir; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblAlumno; private javax.swing.JList lstAlumno; private javax.swing.JTextField txtAlumno; } Parte de este cdigo esta autogenerado. Para trabajar con un objeto de la clase JList es necesario crear un objeto de la clase DefaultListModel, un modelo que va sobre la lista. Mtodos empleados: getKeyCode(): obtiene el cdigo de una tecla que se presiona. setEnabled(boolean bol): coloca el estado true o false a un TextField getSelectedIndex(): obtiene el ndice de la lista. remove(int indice): elimina un tem del modelo de lista dndole el ndice. addElement(nom): adiciona elementos a un modelo de lista setModel(x): coloca un modelo de lista a una lista.

    Ejemplo 7: Usando solo el teclado ingresar el nombre y apellidos de un grupo de personas y guardarlo en una tabla, adems colocar un botn que permita eliminar un registra de la tabla y otro botn que elimine todos los datos de la tabla. 27. Cree una clase Ejemplo4 de tipo JFrame Form y obtenga la siguiente interfaz: Considere los siguientes objetos componentes:

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    154 Sistema a Distancia

    JLabel : lblNombre, lblApellidos JTextField : txtNombre, txtApellidos JButton : btnAceptar, btnEliminarRegistro, btnEliminarTodo, btnCerrar JTable : tblDatos

    28. En la ventana de cdigo digite el siguiente cdigo, implemetando el listener

    Action sobre los objetos btnAceptar, btnEliminarRegistro, btnEliminarTodo y btnCerrar, el listener Key (keyPressed)

    import javax.swing.JOptionPane; public class Ejemplo7 extends javax.swing.JFrame { int fila; public Ejemplo7() { initComponents(); } private void initComponents() { } private void txtNombreKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) txtApellidos.requestFocus(); } private void txtApellidosKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) colocarDatosTabla(); } private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { colocarDatosTabla(); } private void btnEliminarRegistroActionPerformed(java.awt.event.ActionEvent evt) { eliminarRegistro(); } private void btnEliminarTodoActionPerformed(java.awt.event.ActionEvent evt) { eliminarTodo(); } private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } public void eliminarTodo(){ for (int i = 0; i < fila; i++) for(int j = 0; j < 2; j++) tabDatos.setValueAt("", i, j); fila=0; } public void eliminarRegistro(){ int indice; indice=tabDatos.getSelectedRow(); if(indice==-1) JOptionPane.showMessageDialog(this, "Seleccione registro", "Alerta!!!!!", JOptionPane.WARNING_MESSAGE); else{ for (int i = indice; i < fila; i++) for(int j = 0; j < 2; j++) tabDatos.setValueAt(tabDatos.getValueAt(i+1, 0), i, j); fila--; }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    155 Sistema a Distancia

    } public void colocarDatosTabla(){ String nom, ape; nom=txtNombre.getText(); ape=txtApellidos.getText(); tabDatos.setValueAt(nom, fila, 0); tabDatos.setValueAt(ape, fila, 1); fila++; txtNombre.setText(""); txtApellidos.setText(""); txtNombre.requestFocus(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Ejemplo7().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btnAceptar; private javax.swing.JButton btnCerrar; private javax.swing.JButton btnEliminarRegistro; private javax.swing.JButton btnEliminarTodo; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblApellidos; private javax.swing.JLabel lblNombre; private javax.swing.JTable tabDatos; private javax.swing.JTextField txtApellidos; private javax.swing.JTextField txtNombre; } Parte de este cdigo esta autogenerado. Mtodos empleados: setValueAt(Object valor, int fila, int columna): coloca un valor a una tabla,

    se especifica el valor como primer parmetro, seguido del ndice de la fila y el ndice de la columna donde se ubicar el valor.

    getValueAt(int fila, int columna): obtiene un valor de una tabla, especificando como parmetros los ndices de la fila y la columna donde se ubica dicho valor.

    getSelectedRow(): obtiene el ndice de una fila seleccionada de una tabla. showMessageDialog(this, mensaje, ttulo, icono): muestra en un

    JOptionPane (una pequea ventana) un mensaje. Ejemplo 8: cree una interfaz con un men que contenga los menus tems respectivos para llamar a los ejemplos desarrollados. 29. Cree una clase Ejemplo8 de tipo JFrame Form y obtenga la siguiente interfaz:

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    156 Sistema a Distancia

    Considere los siguientes objetos componentes: JMenuBar : mbrBarraMenu JMenu : menVariosEjemplos JMenuItem : mtmEjemplo1, mtmEjemplo2, mtmEjemplo3, mtmEjemplo4,

    mtmEjemplo5, mtmEjemplo6, mtmEjemplo7, mtmSalir 30. En la ventana de cdigo digite el siguiente cdigo, implemetando el listeners

    Action sobre los objetos mtmEjemplo1, mtmEjemplo2, mtmEjemplo3, mtmEjemplo4, mtmEjemplo5, mtmEjemplo6, mtmEjemplo7 y mtmSalir: public class Principal extends javax.swing.JFrame { public Principal() { initComponents(); } private void initComponents() { } private void mtmEjemplo1ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo1 x=new Ejemplo1(); x.setVisible(true); } private void mtmEjemplo2ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo2 x=new Ejemplo2(); x.setVisible(true); } private void mtmEjemplo3ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo3 x=new Ejemplo3(); x.setVisible(true); } private void mtmEjemplo4ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo4 x=new Ejemplo4(); x.setVisible(true); } private void mtmEjemplo5ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo5 x=new Ejemplo5(); x.setVisible(true); } private void mtmEjemplo6ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo6 x=new Ejemplo6(); x.setVisible(true); }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    157 Sistema a Distancia

    private void mtmEjemplo7ActionPerformed(java.awt.event.ActionEvent evt) { Ejemplo7 x=new Ejemplo7(); x.setVisible(true); } private void mtmSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Principal().setVisible(true); } }); } private javax.swing.JMenuBar mbrBarraMenu; private javax.swing.JMenu menVariosEjemplos; private javax.swing.JMenuItem mtmEjemplo1; private javax.swing.JMenuItem mtmEjemplo2; private javax.swing.JMenuItem mtmEjemplo3; private javax.swing.JMenuItem mtmEjemplo4; private javax.swing.JMenuItem mtmEjemplo5; private javax.swing.JMenuItem mtmEjemplo6; private javax.swing.JMenuItem mtmEjemplo7; private javax.swing.JMenuItem mtmSalir; } Parte de este cdigo esta autogenerado. Mtodos empleados: setVisble(boolean bol): muestra la clase del obejto que la ejecuta.

    Cuestionario de Preguntas

    1. Cual es la diferencia entre un componente y un contenedor. Mencione el contener que hemos usado en los ejemplos, asi como algunos componentes.

    2. Cuales son las caractersticas del paquete swing. 3. Que relacin existe entre AWT y swing. 4. Para qu se usan los listenes. 5. Qu son los layout.

    Ejercicios propuestos

    1. Una empresa de correos registra los datos de sus envos como: peso, tipo, destino, de acuerdo a esto el precio por cada gramo es:

    Precio x gramo (S/.) Tipo Nacional Internacional

    Simple Certificado

    0.90 1.30

    1.60 3.40

    Elaborar un programa que calcule el monto que se paga por un envi. EMPLEAR: JLabel: Ingresar peso, Seleccionar tipo, Seleccionar destino. JTextField: Peso ButtonGroup: Tipo, Destino JButton: Calcular, Borrar, Cerrar

    2. Escribir un programa que maneje los datos de una relacin de nombres permitiendo ingresar los nombres a una lista y pasar de esta lista a otra lista de una en uno o todos los nombres a la vez.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    158 Sistema a Distancia

    EMPLEAR: JLabel: Ingresar nombre, Lista1, Lista2. JTextField: Nombre JList: lista1, lista2 JButton: >, >>,

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    159 Sistema a Distancia

    Leccin 10

    Arreglos de objetos con interfaz grfica

    10.1. Arreglos de objetos Asi como se puede crear arreglos de enteros, reales, caracteres y Strings, tambin es posible crear arreglos de objetos, el cual permitirn manejar los datos de una lista de objetos. Recuerde un arreglo de objetos se declara de dos formas: Ejemplo: Alumno[] va = new Alumno[50]; Alumno va[] = new Alumno[50];

    10.2. Interfaz grfica Una interfaz grfica permite la interaccin ms dinmica del programa con el usuario. De esta manera una vez visto el uso de los arreglos de objetos (leccin 5) y de las clases del paquete swing (leccin 9) que determinan una interfaz de usuario, es necesario combinarlas para resolver problemas ms reales. Para este caso empleamos objetos de la clase JTabledPane ya que nos permitir simular el uso de ms de una ventana.

    Laboratorio Nro 10 Objetivos

    Aplicar el uso de arreglos de objetos a una interfaz grfica.

    Orden de Realizacin del Laboratorio

    1. Cree un nuevo proyecto con el nombre Proyecto_10.

    2. Cree un paquete con el nombre arreglos_objetos_interfaz.

    Ejemplo 1: Un centro de salud registra los datos de sus asegurados como: cdigo, nombre, categora, edad, pago mensual. De acuerdo a la categora el pago mensual vara en:

    Categora Pago mensual (S/.) A B C

    98.00 76.00 55.00

    nombreClase[ ] nombreArregloObjetos = new nombreClase[tamao];

    nombreClase nombreArregloObjetos[ ] = new nombreClase[tamao];;

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    160 Sistema a Distancia

    Adems si el asegurado tiene mas de 55 aos dentra que pagar un adicional del 10%. Elaborar un programa que calcule el monto final que paga N asegurados, visualizando reportes de acuerdo a su categora, adems el programa debe permitir buscar a un asegurado ingresando su cdigo. 3. Cree una clase Asegurado que no contenga el mtodo main y digite el siguiente

    cdigo considerando la generacin de los mtodos get y set por cada atributo.

    public class Asegurado { private String codigo; private String nombre; private String apellidos; private char categoria; private double adicional; private double pago; private double total; private int edad; public void calcularAdicional(){ if(edad >55) adicional=0.05*pago; } public void calcularPago(){ switch(categoria){ case 'A': pago=98.00; break; case 'B': pago=76.00; break; case 'C': pago=55.00; break; } } public void calcularTotal(){ total=pago+adicional; } public String getCodigo() { return codigo; } public void setCodigo(String codigo) { this.codigo = codigo; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellidos() { return apellidos; } public void setApellidos(String apellidos) { this.apellidos = apellidos; } public char getCategoria() { return categoria; } public void setCategoria(char categoria) { this.categoria = categoria; }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    161 Sistema a Distancia

    public double getAdicional() { return adicional; } public void setAdicional(double adicional) { this.adicional = adicional; } public double getPago() { return pago; } public void setPago(double pago) { this.pago = pago; } public double getTotal() { return total; } public void setTotal(double total) { this.total = total; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } }

    4. Cree una clase del tipo JFrame form con el nombre AplicacinAsegurado y disee la siguiente interfaz grfica:

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    162 Sistema a Distancia

    Se trata de una sola interfaz que muestra el contenido de cada una de sus tres fichas (ingreso, bsqueda, reporte). Considere los siguientes objetos componentes:

    JTabbedPane : tbpAsegurado JPanel : pnlIngreso, pnlBusqueda, pnlReporte

    Arastre un objeto de la clase JTabbedPane sobre el diseo de la clase AplicacinAsegurado, amplelo aproximadamente al tamao de la clase, sobre este jTabbedPane coloque cada uno de los tres panel si lo hace correctamente su interfaz mostrar tres fichas.

    En el panel Ingreso se tiene:

    JLabel : lblCodigo, lblNombre, lblApellido, lblCategoria, lblEdad

    JTextField : txtCodigo, txtnombre, txtApellido JComboBox : cbxCategoria, cbxEdad JButton : btnIngresar

    En el panel bsqueda se tiene:

    JLabel : lblCodigoBusqueda

    JTextField : txtCodigoBusqueda JTextArea : txtDatos

    En el panel reporte se tiene:

    JLabel : lblOpcion JComboBox : cbxOpcion JTable : tblReporte 31. En la ventana de cdigo digite el siguiente cdigo, implemetando el listeners

    Action sobre el objeto btnIngresar, el listener Item (ItemStateChanged) para el cbxOpcion, el listener Key (KeyPressed) sobre txtCodigoBusqueda y el listener Ancestor (ancestorAdded) sobre el pnlReporte. import javax.swing.JOptionPane; public class Aplicacion extends javax.swing.JFrame { Asegurado a[]=new Asegurado[80]; int n; public Aplicacion() { initComponents(); mostrarEdades(); } public void mostrarEdades(){ for(int i=0; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    163 Sistema a Distancia

    } private void pnlReporteAncestorAdded(javax.swing.event.AncestorEvent evt) { mostrarDatos(); } private void cbxOpcionItemStateChanged(java.awt.event.ItemEvent evt) { borrarTabla(); mostrarSegunCategoria(); } private void txtCodigoBusquedaKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) buscarAsegurado(); } public void buscarAsegurado(){ txtDatos.setText(""); String codigo; int indice=-1; codigo=txtCodigoBusqueda.getText(); for(int i=0; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    164 Sistema a Distancia

    tblReporte.setValueAt(a[i].getCategoria(), fila, 3); tblReporte.setValueAt(a[i].getEdad(), fila, 4); tblReporte.setValueAt(a[i].getPago(), fila, 5); tblReporte.setValueAt(a[i].getAdicional(), fila, 6); tblReporte.setValueAt(a[i].getTotal(), fila, 7); fila++; } } public void mostrarDatos(){ for(int i=0; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    165 Sistema a Distancia

    private javax.swing.JComboBox cbxCategoria; private javax.swing.JComboBox cbxEdad; private javax.swing.JComboBox cbxOpcion; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTextField jTextField2; private javax.swing.JPanel pnlBusqueda; private javax.swing.JPanel pnlIngreso; private javax.swing.JPanel pnlReporte; private javax.swing.JTable tblReporte; private javax.swing.JTabbedPane tbpAsegurado; private javax.swing.JTextField txtApellidos; private javax.swing.JTextField txtCodigo; private javax.swing.JTextField txtCodigoBusqueda; private javax.swing.JTextArea txtDatos; private javax.swing.JTextField txtNombre; } Parte de este cdigo esta autogenerado.

    Ejercicios propuestos

    1. Una clnica registra los datos de sus asegurados, el cual depende de la edad del asegurado, como se muestra en el siguiente cuadro:

    Edad Pago mensual (S/.) Adicional (%) 0 18 19 30 31 50 51 - mas

    60.00 80.00 100.00 120.00

    10 9 8 7

    Asimismo, si el asegurado realiza en un mes ms de 7 consultas, tendr que hacer un pago adicional de acuerdo al cuadro anterior. Elaborar un programa que permita ingresar los datos de los asegurados de la clnica, adems buscar un asegurado ingresando su nombre, y visualizar en una tabla a todos los asegurados con ese nombre, de manera que al dar un doble clic sobre los datos del asegurado que se est buscando se muestren estos en TextFields para poder ser modificardos, mostrar adems un reporte de los asegurados menores e iguales a 30 aos y los asegurados mayores a 30 aos.

    2. Una empresa de servicio de lavado de autos, registra los datos de los autos atendidos en el da (dueo, tipo de lavado, pago, etc.), de acuerdo al servicio prestado el monto que paga un cliente es:

    Tipo de lavado Pago (S/.) Simple Ejecutivo Completo

    10.00 17.00 28.00

    As mismo si el modelo del auto tiene ms de 4 puertas, el pago se incrementa en un 5%, adicionalmente el cliente puede solicitar cambio de aceite el cual tendr un consto de S/.16.00. Elaborar un programa que registre los autos atendidos, eliminar el registro de un auto ingresando el nombre del dueo del auto y muestre reporte de acuerdo al tipo de lavado que se ha realizado.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    166 Sistema a Distancia

    3. En una farmacia se guardan los datos de los medicamentos que se ofrecen, de

    acuerdo al tipo y a la procedencia del medicamento se realizan los siguientes descuentos :

    Descuento (%.) Tipo

    Nacional Importado A B C

    25 20 15

    20 15 10

    Adems, si el medicamento tiene un precio superior a S/50.00 tiene un descuento adicional del 7%. Elaborar un programa que registre los medicamentos de una farmacia, busque todos los medicamentos importados y nacionales, y muestre un reporte de acuerdo al tipo.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    167 Sistema a Distancia

    Leccin 11

    Gestor de errores y archivos

    1.1. Excepciones

    Las excepciones en Java son objetos que derivan de la superclase Exception, usadas para detectar y corregir errores. El uso adecuado de las excepciones aumenta en gran medida la robustez de las aplicaciones. Existen tambin los errores internos que son objetos de la clase Error. Ambas clases Error y Exception son clases derivadas de la clase base Throwable.

    Java lanza una excepcin en respuesta a una situacin poco usual. El programador tambin puede lanzar sus propias excepciones. Existe toda una jerarqua de clases derivada de la clase base Exception, las cuales se ubican en dos grupos principales:

    Las excepciones en tiempo de ejecucin (RuntimeException) ocurren cuando el programador no se ha tenido cuidado al escribir su cdigo. Por ejemplo, cuando se sobrepasa la dimensin de un arreglo se lanza una excepcin ArrayIndexOutOfBounds. Cuando se hace uso de una referencia a un objeto que no ha sido creado se lanza la excepcin NullPointerException. Estas excepciones le indican al programador los errores que tiene el programa y que debe arreglarlo antes de proseguir.

    El segundo grupo de excepciones (IOException), indica que ha sucedido algo inesperado o fuera de control, son errores que no puede evitar el programador.

    Throwable

    Exception Error

    RuntimeException IOException NullPointterException ArithmeticException ClassCastException

    FileNotFoundException ZipException

    Figura 11.1. Jerarqua de la clase Throwable

    1.1.1. Estructura del manejo de excepciones

    Est constituido por los bloque try, catch y finally, donde:

    try: Es el bloque de cdigo vigilando, donde se previene la generacin de una excepcin. El bloque try tiene que ir seguido, al menos, por una clusula catch o una clusula finally.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    168 Sistema a Distancia

    catch: Es el cdigo que se ejecuta cuando se produce una excepcin, es decir una situacin anormal. Se pueden colocar sentencias sucesivas de catch, pero cada una de estas debe controlar una excepcin diferente.

    finally: Es el bloque de cdigo que se ejecuta siempre, haya o no excepcin. Es opcional. Se ejecuta independientemente de lo que se haga en el bloque try o el bloque catch.

    La estructura de estos bloques es:

    1.1.2. Excepciones ms frecuentes

    La siguiente tabla muestra excepciones predefinidas ms frecuentes:

    ArithmeticException Las excepciones aritmticas son tpicamente el resultado de una divisin por 0.

    NullPointerException Se produce cuando se intenta acceder a una variable o mtodo antes de ser definido.

    IncompatibleClassChangeException El intento de cambiar una clase afectada por referencias en otros objetos, especficamente cuando esos objetos todava no han sido recompilados.

    ClassCastException El intento de convertir un objeto a otra clase que no es vlida.

    NegativeArraySizeException Puede ocurrir si hay un error aritmtico al intentar cambiar el tamao de un array.

    OutOfMemoryException No debera producirse nunca! El intento de crear un objeto con el operador new ha fallado por falta de memoria. Y siempre tendra que haber memoria suficiente porque el garbage collector se encarga de proporcionarla al ir liberando objetos que no se usan y devolviendo memoria al sistema.

    NoClassDefFoundException Se referencia a una clase que el sistema es incapaz de encontrar.

    ArrayIndexOutOfBoundsException Es la excepcin que ms frecuentemente se produce. Se genera al intentar acceder a un elemento de un array ms all de los lmites definidos inicialmente para ese array.

    UnsatisfiedLinkException Se hizo el intento de acceder a un mtodo nativo que no existe.

    InternalException Este error se reserva para eventos que no deberan ocurrir. Por definicin, el usuario

    try { //bloque1 } catch(Exception1 e ) { //bloque2 } catch(Exception2 e ) { //bloque3 } finally{ //bloque4 }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    169 Sistema a Distancia

    nunca debera ver este error y esta excepcin no debera lanzarse

    Tabla 11.1. Excepciones mas frecuentes

    1.2. Archivos Una tarea comn en programacin es leer y escribir archivos. La informacin almacenada en un archivo pueden ser datos byte o caracteres (texto).

    Java cuenta con aproximadamente 20 clases para el acceso a archivos con sus propios mtodos respectivo

    1.2.1. Tipos de acceso a los archivos

    Al trabajar con archivos es necesario elegir el tipo de acceso que se tendr sobre los datos del archivo: acceso de flujo y acceso aleatorio

    .

    El acceso de flujo en un archivo, se debe tratar como una secuencia de elementos que deben ser procesados uno tras otro, empezando por el primer elemento.

    El acceso aleatorio permite acceder a una posicin especfica del archivo, como sucede en las bases de datos, agilizando el procedimiento de manipulacin de datos, sin embargo este tipo de acceso es ms complicado de programar.

    1.2.2. Archivos de texto

    Para leer los datos de un archivo de texto, se debe:

    1. Abrir el archivo. 2. Leer o introducir los datos en las variables, un elemento a la vez. 3. Cerrar el archivo.

    Para escribir en un archivo de texto, se debe:

    1. Abrir el archivo. 2. Extraer o escribir los elementos en la secuencia requerida. 3. Cerrar el archivo.

    Las clases empleadas en el manejo de archivos son: Para leer: InputStreamReader: FileReader: representa un archivo de lectura. Para escribir:

    PrintWriter: emplea los mtodos print y println similares a los de System. FileWriter: representa un archivo de escritura.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    170 Sistema a Distancia

    Laboratorio Nro 11 Objetivos

    Entender claramente el uso de excepciones y archivos de accedo de flujo. Identificar las clases que manejan archivos de acceso de flujo.

    Orden de Realizacin del Laboratorio

    1. Cree un nuevo proyecto con el nombre Proyecto_10. Ejemplo 1: Usando excepciones propias calcular la divisin de dos nmeros, donde se capture una excepcin si el denominador es cero. 2. Cree un paquete con el nombre mis_excepciones.

    3. Cree una clase ExceptionDivisionCero que no tenga el mtodo main y digite el

    siguiente cdigo:

    public class ExceptionDivisionCero extends ArithmeticException{ public ExceptionDivisionCero() { super("Divisin entre cero"); } }

    4. Cree una clase Division de tipo JFrame form y digite el siguiente cdigo:

    import javax.swing.JOptionPane; public class Division extends javax.swing.JFrame { public Division() { initComponents(); } private void initComponents() { } private void btnDividirActionPerformed(java.awt.event.ActionEvent evt) { calcularDivision(); } public void calcularDivision(){ double num, den, resp; num=Double.parseDouble(txtDividendo.getText()); den=Double.parseDouble(txtDivisor.getText()); try{ resp=cociente(num, den); txtCociente.setText(""+resp); } catch(ExceptionDivisionCero e){ JOptionPane.showMessageDialog(this, e, "Error", JOptionPane.ERROR_MESSAGE); } } public double cociente(double n, double d){ double r; if(d==0) throw new ExceptionDivisionCero(); r=n/d; return r; } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    171 Sistema a Distancia

    public void run() { new Division().setVisible(true); } }); } private javax.swing.JButton btnDividir; private javax.swing.JLabel lblCociente; private javax.swing.JLabel lblDividendo; private javax.swing.JLabel lblDivisor; private javax.swing.JTextField txtCociente; private javax.swing.JTextField txtDividendo; private javax.swing.JTextField txtDivisor; }

    Ejemplo 2: Mediante el uso de archivos se pide manejar las cuentas de ahorro de los clientes de un banco de manera que se pueda eliminar una cuenta, actualizar una cuenta (despus de realizar un depsito o retiro), y hacer un reporte de todas las cuentas. 5. Cree un paquete con el nombre banco.

    6. Cree una clase Cuenta que no tenga el mtodo main y digite el siguiente cdigo,

    autogenrando los mtodos get y set por cada atributo. public class Cuenta { private int cta; private String tit; private double saldo; public int getCta() { return cta; } public void setCta(int cta) { this.cta = cta; } public String getTit() { return tit; } public void setTit(String tit) { this.tit = tit; } public double getSaldo() { return saldo; } public void setSaldo(double saldo) { this.saldo = saldo; } }

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    172 Sistema a Distancia

    7. Cree la clase Ingreso de tipo JFrame form, disee la siguiente interfaz y digite el siguiente cdigo. import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Ingreso extends javax.swing.JFrame { public Ingreso() { initComponents(); } private void initComponents() { } private void txtCodigoKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) txtNombre.requestFocus(); } private void txtNombreKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) txtSaldo.requestFocus(); } private void txtSaldoKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER){ ingresarDatosArchivo(); borrarDatos(); } } private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) { ingresarDatosArchivo();

    } public void borrarDatos(){ txtCodigo.setText(""); txtNombre.setText(""); txtSaldo.setText(""); txtCodigo.requestFocus(); } public void ingresarDatosArchivo(){ Cuenta c=new Cuenta(); c.setCta(Integer.parseInt(txtCodigo.getText())); c.setTit(txtNombre.getText()); c.setSaldo(Double.parseDouble(txtSaldo.getText())); try{ FileWriter f=new FileWriter("banco.txt", true); PrintWriter p=new PrintWriter(f); p.println(c.getCta()+","+c.getTit()+","+c.getSaldo()); p.close();

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    173 Sistema a Distancia

    } catch(IOException e){ System.out.println(e); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Ingreso().setVisible(true); } }); } private javax.swing.JButton btnIngresar; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JTextField txtCodigo; private javax.swing.JTextField txtNombre; private javax.swing.JTextField txtSaldo; }

    8. Cree la clase Movimientos de tipo JFrame form, disee la siguiente interfaz y digite el siguiente cdigo. import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.StringTokenizer; import javax.swing.JOptionPane; public class Movimientos extends javax.swing.JFrame { Cuenta c[]=new Cuenta[80]; int n, indice; public Movimientos() { initComponents(); leerArchivo(); } public void leerArchivo(){ try{ String linea; FileReader f=new FileReader("banco.txt"); BufferedReader b=new BufferedReader(f);

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    174 Sistema a Distancia

    while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea, ","); c[n]=new Cuenta(); c[n].setCta(Integer.parseInt(t.nextToken())); c[n].setTit(t.nextToken()); c[n].setSaldo(Double.parseDouble(t.nextToken())); n++; } b.close(); } catch(IOException e){ System.out.print(e); } } private void initComponents() { } private void txtCuentaKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) indice=buscarCuenta(); } private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { realizarMovimiento(); actualizarArchivo(); } public void actualizarArchivo(){ try{ FileWriter f=new FileWriter("banco.txt"); PrintWriter p=new PrintWriter(f); for(int i=0; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    175 Sistema a Distancia

    for(int i=0; i

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    176 Sistema a Distancia

    public class Reporte extends javax.swing.JFrame { public Reporte() { initComponents(); } private void initComponents() { } private void btnReporteActionPerformed(java.awt.event.ActionEvent evt) { leerDatosArchivo(); } public void leerDatosArchivo(){ try{ String linea; int fila=0; FileReader f=new FileReader("banco.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea, ","); tblReporte.setValueAt(t.nextToken(), fila, 0); tblReporte.setValueAt(t.nextToken(), fila, 1); tblReporte.setValueAt(t.nextToken(), fila, 2); fila++; } b.close(); } catch(IOException e){ System.out.print(e); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Reporte().setVisible(true); } }); } private javax.swing.JButton btnReporte; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable tblReporte; }

    10. Cree la clase Principal de tipo JFrame form, disee la siguiente interfaz y digite el siguiente cdigo. public class Principal extends javax.swing.JFrame { public Principal() { initComponents();

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    177 Sistema a Distancia

    } private void initComponents() { } private void mntIngresarActionPerformed(java.awt.event.ActionEvent evt) { Ingreso x=new Ingreso(); x.setVisible(true); } private void mntMovimientosActionPerformed(java.awt.event.ActionEvent evt) { Movimientos x=new Movimientos(); x.setVisible(true); } private void mntReporteActionPerformed(java.awt.event.ActionEvent evt) { Reporte x=new Reporte(); x.setVisible(true); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Principal().setVisible(true); } }); } private javax.swing.JMenu jMenu1; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem mntIngresar; private javax.swing.JMenuItem mntMovimientos; private javax.swing.JMenuItem mntReporte; }

    Cuestionario de Preguntas

    1. Para que se usa las excepciones. 2. Cual es la estructura del manejo de una excepcin, defina brevemente. 3. Qu diferencia existe entre un acceso de flujo de datos y un acceso aleatorio

    dentro de los archivos. Ejercicios propuestos

    1. Usando archivos, elaborar un programa que permita manejar los datos los clientes que registra un almacn como: cdigo, nombre, apellidos y monto de la compra, de manera que se pueda buscar y modificar sus datos, as como mostrar todos los clientes registrados, los clientes con compras mayores a S/.100.00 y los clientes con compras menores e iguales a S/100.00.

    2. Registrar en un archivo los datos de los cursos que conforman la currcula de un plan de estudios, luego generar reportes de manera que se muestre los cursos por cada ciclo.

    3. Guardar en un archivo los datos de los alumnos de un centro de estudio de

    manera que muestre la condicin final de cada alumno: Promedio Condicin 0 6 7 10 11 13 14 17 18 - 20

    Psimo Malo

    Regular Bueno

    Excelente

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    178 Sistema a Distancia

    Elaborar un programa que permita buscar un alumno por su cdigo, eliminar a dicho alumno y/o modificar sus datos, ademar mostrar reportes de los alumnos aprobados y desaprobados.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    179 Sistema a Distancia

    Resumen

    En esta ltima unidad se aborda el desarrollo de programas mediante la interfaz grfica que proporciona el paquete swing de java, se desarrollan ejemplos que explican el uso de los principales componentes grficos, asi mismo se introduce al alumno al desarrollo de ejemplos con arreglos de objetos a travs de la interfaz grafica, por ultimo se explica el uso y los beneficios que trae el empleo de las excepciones y los archivos secuenciales.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    180 Sistema a Distancia

    Lectura

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    181 Sistema a Distancia

    Autoevaluacin

    1. En la siguiente interface grafica de usuario que elemento no esta presente:

    1. botn 2. etiqueta 3. caja de texto 4. rea de texto

    2. Cul de los siguientes no es un contenedor? 1. frame 2. lista 3. dialog 4. window

    3. Cual de las siguientes no es un elemento grafico? 1. dialog 2. botn 3. caja de texto 4. etiqueta

    4. el siguiente tipo de exception: se produce al intentar acceder a un elemento de un array ms all de los lmites definidos inicialmente para ese array corresponde a:

    1. ArrayIndexOutOfBoundsException 2. OutOfMemoryException 3. NegativeArraySizeException 4. NullPointerException

    5. El siguiente enunciado cdigo que se ejecuta cuando se produce la excepcin y que se encuentra dentro de un bloque, corresponde a:

    1. bloque Try 2. bloque catch 3. bloque finally 4. bloque center

    Clave : 1:4; 2:2; 3:1; 4:1; 5:2;

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    182 Sistema a Distancia

    Enlaces

    http://informatica.uv.es/iiguia/LP/laboratorio/P3/p3.pdf http://delfosis.uam.mx/~sgb/Archivos/Excepciones_y_archivos.html

    Bibliografa

    Deitel y Deitel (1998) Como Programar en Java. Mxico D.F. Prentice Hall Hispanoamericana. S.A. Cap. 15: Archivos y flujos, pp. 750-803. Sergio Dos Santos (2005) Java, la gua total del programador. Buenos Aires. MP Ediciones. Cap. 7: Errores y Excepciones , pp. 124-140.

  • Lenguaje de Programacin II - Unidad III Sally Torres A. / Yuliana Juregui R.

    183 Sistema a Distancia

    Glosario

    Abstraccin: proceso que nos permite identificar las caractersticas y el comportamiento ms importantes de los objetos del mundo real, para luego poder modelarlo dentro un objeto de SW.

    Modularidad: creacin de mdulos independientes de los objetos del mundo real a travs de las clases y por consiguiente modificar sus caractersticas y compilarlas de forma independiente a las dems clases.

    Encapsulamiento: propiedad atribuida a los objetos del mundo real para poder ocultar ciertas caractersticas que se quiere mantener desconocidas para los dems objetos de una determinada aplicacin.

    Proyecto: Medio de encapsulamiento de mayor nivel de los paquetes. Paquete: Medio de encapsulamiento de mayor nivel que las clases, que puede contener clases, interfaces y tambin otros paquetes.

    Modificadores de acceso: parmetro que definen los niveles de visibilidad entre miembros (variables y mtodos) de una clase y otros objetos.

    Modificador de tipo: parmetro que permite convertir una cadena a un tipo de dato primitivo.

    Flujos de datos: abstraccin de todo aquello que produzca o consuma informacin.

    Clase: plantilla para crear la estructura de un objeto (atributos) y su interfaz funcional (mtodos).

    Objeto: instancia particular de una clase. Se distingue por sus propias caractersticas y funcionalidad.

    Mensaje: mecanismo que permite a los objetos comunicarse entre s, llamada a los mtodos de la clase.

    Herencia: mecanismo que permite crear una clase a partir de otra ya existente.

    Clase abstracta: Son clases que no crean objetos, tienen mtodos que estn implementadas parcialmente o simplemente no estn implementados.

    Polimorfismo: consiste en que objetos similares pueden responder al mismo mensaje de d