Aplicaciones gui en Java



Descargar 13,27 Kb.
Fecha de conversión21.06.2017
Tamaño13,27 Kb.

Aplicaciones GUI en Java

  • Tecnologías GUI de Java
  • AWT (Abstract Window Toolkit)
  • JFC (Java Foundation Classes). Mejor conocida como Swing
  • SWT (Standard Widget Toolkit)

Programación JFC (Swing)

  • Frames
    • JFrame
    • JDialog
  • Panels
    • Layouts
    • Boxes
  • Componentes (widgets)
    • JComponent
    • JLabel
    • JTextField
    • JButton
    • JList

Aplicaciones GUI en Java

  • Para crear una aplicación con Swing se debe:
    • Crear un JFrame
    • Llenarlo de components según los requerimientos de la aplicación
    • Mostrar el JFrame en pantalla invocando el método setVisible(true)
  • Ejemplo
    • public static void main(String[] args)
    • {
    • JFrame frame = new JFrame();
    • frame.setVisible(true);
    • }

Aplicaciones GUI en Java

  • Se acostumbra (pero no es obligatorio) declarar una subclase de JFrame y en el constructor llenar el Frame de componentes
    • public class FrameAlumnos extends JFrame {
    • JTextField nombre;
    • JTextField fechaNac;
    • FrameAlumnos() {
    • JPanel contentPane = (JPanel) getContentPane();
    • nombre = new JTextField();
    • contentPane.add(nombre);
    • FechaNac = new JtextField();
    • contentPane.add(fechaNac);
    • }
    • ...

Aplicaciones GUI en Java

  • Ubicación de componentes en un Frame (Layout)
  • La clase JPanel es un contenedor de objetos que pueden ser desplegados
  • Un JFrame tiene un panel principal que se obtiene invocando getContentPane()
    • JFrame frame = new JFrame();
    • JPanel contentPane = (JPanel) frame.getContentPane();
    • . . .
  • Un panel puede contener componentes finales (JLabel, JTextField, etc.) u otros paneles (Jpanel)
  • Esto permite acomodar las cosas en el Frame
  • Se puede utilizar posicionamiento absoluto (x, y) pero esto no es recomendable

Aplicaciones GUI en Java

  • Layouts
  • Los Layouts son clases que determinan la forma como se acomodan los componentes en un panel
  • A cada JPanel se le puede asignar un Layout
    • JPanel panel = new Jpanel()
    • panel.setLayout(new FlowLayout());
  • Algunos Layouts comunmente usados
    • FlowLayout. De izquierda a derecha y de arriba abajo.
    • GridLayout. Una tabla o cuadrícula (todas las celdas del mismo tamaño).
    • BoxLayout. De arriba abajo o de izquierda a derecha. Tamaño variable (muy importante).

Aplicaciones GUI en Java

  • Eventos
  • Swing permite el desarrollo de aplicaciones manejadas por eventos (event driven)
  • Un evento es un click del ratón, una tecla oprimida, seleccionar una opción en un menú, etc.
  • Para procesar estos eventos una aplicación debe definir unos event listener.
  • Un event listener es un objeto que se registra con un componente para un evento en particular.
  • Cuando ocurre el evento el listener es notificado mediante la invocación de un método

Aplicaciones GUI en Java

  • Para crear un listener la aplicación debe declarar una clase que implementa alguna interfaz listener (listener interface)
  • Las interfaces listener más usadas son:
    • ActionListener
    • MouseListener
    • KeyListener
    • WindowListener

Aplicaciones GUI en Java

  • Ejemplo
    • class EdadKeyListener implements KeyListener {
    • void keyTyped(KeyEvent e) {
    • char c = e.getKeyChar();
    • if (!Character.isDigit(c) {
    • // error, solo se permiten números
    • }
    • }
    • void keyPressed(KeyEvent e) {
    • }
    • void keyReleased(KeyEvent e) {
    • }
    • }

Aplicaciones GUI en Java

  • Existen unas clases adapter que implementan la interfaz correspondiente y definen métodos vacíos
  • Esto da la facilidad de que no hay que implementar los métodos que no interesan
    • class EdadKeyListener extends KeyAdapter {
    • void keyTyped(KeyEvent e) {
    • char c = e.getKeyChar();
    • if (!Character.isDigit(c) {
    • // error, solo se permiten números
    • }
    • }
    • }

Aplicaciones GUI en Java

  • Ejemplo de uso
  • TextField edad = new TextField(3);
  • edad.addKeyListener(new EdadKeyListener());

Aplicaciones GUI en Java

  • Cada componente permite agregar un ActionListener que está relacionado con el tipo del componente
  • Pero ejemplo si a un botón se le agrega un ActionListener el mismo es invocado cuando se oprime el botón ya sea con el mouse o con el teclado.
  • No es necesario definir KeyEvents o MouseEvents para esto
  • Los ActionListener se usan principalmente con botones y menús
  • Sin embargo también pueden ser usados con otros tipos de componente.
  • Por ejemplo, para un TextField el ActionListener es invocado cuando el cursor sale del TextField
  • Las listas y tablas utilizan unos listeners especiales denominados SelectionListener

Aplicaciones GUI en Java

  • Ejemplo de un ActionListener
    • JButton btnCancelar = new JButton(“Cancelar”);
    • btnCancelar.addActionListner(new CancelarListener());
    • class CancelarListener implements ActionListener {
    • void actionPerformed(ActionEvent e) {
    • dialogo.setVisible(false);
    • }
    • }

Aplicaciones GUI en Java

  • Diálogos
  • Un diálogo es un frame que permite recolectar datos para realizar algún procesamiento
  • En Java existe una clase JDialog para este fin.
  • JDialog es subclase de JFrame y permite definir diálogos modales y no modales
  • Si un diálogo es modal cuando se activa no se puede acceder a ningún otro elemento del programa
  • Si el diálog es modal se abre la ventana (window) del diálogo pero el usuario puede seleccionar y trabajar con otras ventanas de la aplicación
  • En Swing si el diálogo es modal el hilo que abre el diálogo se bloquea hasta que el diálogo sea cerrado.

Aplicaciones GUI en Java

  • Para crear un diálogo modal se debe especificar en el constructor
    • JDialog dlg = new Jdialog(frame, “Titulo”, true);
  • El tercer parámetros es booleano e indica si el diálogo es modal
  • Generalmente se crea una subclase de JDialog:
    • public class DialogoDatos extends Jdialog {
    • JTextField nombre;
    • ...
    • public DialogoDatos(JFrame frame) {
    • super(frame, “Título”, true);
    • ContentPane cp = (ContentPane) getContentPane();
    • ...
    • }
    • }

Aplicaciones GUI en Java

  • Ejemplo de uso
    • DialogoDatos dlg = new DialogoDatos(this);
    • dlg.setVisible(true);
    • String nombre = dlg.getNombre();
    • ...
  • Si el diálogo no es modal el código que sigue a la instrucción continúa ejecutándose en un hilo paralelo.
  • Por lo tanto la lógica a ejecutar debe colocarse en los métodos de los ActionListener definidos en el diálogo

Aplicaciones GUI en Java

  • Como dibujar cosas en una ventana
  • La clase JComponent es la superclase de la cual se derivan todos los componentes en Swing
  • Se pueden crear subclases de JComponent para definir nuevos componentes
  • El método paintComponent(Graphics g) definido en Jcomponent se usa para dibujar el componente
  • Este método es invocado por Swing cada vez que se requiere repintar el componente (por ejemplo, si la ventana estaba debajo de otra y va a pasar a primer plano, o si estaba minimizada y se va restaurar)
  • A continuación se presenta la forma de hacer un componente para dibujar figuras geométricas en la pantalla

Aplicaciones GUI en Java

    • public class SuperficieDibujo extends JComponent {
    • private int width;
    • private int height;
    • private Image image;
    • private Graphics graphics;
    • public SuperficieDibujo(int w, int h) {
    • this.width = w;
    • this.height = h;
    • image = new BufferedImage(w, h,
    • BufferedImage.TYPE_INT_RGB);
    • graphics = image.getGraphics();
    • this.borrar();
    • }

Aplicaciones GUI en Java

    • public void dibujarRectangulo(Rectangle rect)
    • {
    • graphics.setColor(Color.BLACK);
    • graphics.drawRect(rect.x, rect.y, rect.width,
    • rect.height);
    • this.repaint();
    • }
    • public void paintComponent(Graphics g)
    • {
    • g.drawImage(image, 0, 0, null);
    • }

Aplicaciones GUI en Java

  • Listas
  • La clase JList representa una lista de valores
    • JList lista = new Jlist();
  • Para que la lista tenga scrollbars se debe colocar dentro de un ScrollPane:
    • JScrollPane sp = new JScrollPane(lista);
    • sp.setPreferredSize(new Dimension(80, 260));
  • Los elementos de una lista se guardan en un objeto de una clase que implementa la interfaz ListModel
  • La interfaz ListModel define métodos para obtener los elementos de la lista mediante un índice y para obtener el tamaño de la lista

Aplicaciones GUI en Java

  • La clase DefaultListModel implementa ListModel
    • lista = new JList();
    • ListModel listModel = new DefaultListModel();
    • lista.setModel(listModel);
  • Para agregar o borrar elementos a la lista se usan métodos definidos en DefaultListModel
    • String s = “Hola”;
    • listModel.addElement(s);
    • listModel.remove(2);
  • Se se requiere funcionalidad adicional se puede definir una subclase de AbstractListModel

Aplicaciones GUI en Java

  • Tablas
  • La clase JTable representa una tabla de valores
    • JTable table = new JTable()
  • Para que la tabla tenga scrollbars se debe colocar dentro de un ScrollPane:
    • JScrollPane sp = new JScrollPane(table);
    • sp.setPreferredSize(new Dimension(80, 260));
  • Los elementos de una tabla se guardan en un objeto de una clase que implementa la interfaz TableModel
  • La interfaz TableModel define, entre otros, métodos para obtener los elementos de la tabla mediante dos índices (fila y columna) y para obtener el tamaño de la tabla

Aplicaciones GUI en Java

  • La clase DefaultTableModel implementa TableModel
    • Jtable table = new JTable();
    • TableModel tblModel = new DefaultTableModel();
    • table.setModel(tblModel);
  • Para agregar o borrar elementos a la tabla se usan métodos definidos en DefaultTableModel
    • Vector fila = new Vector();
    • tblModel.addRow(fila);
    • tblModel.removeRow(1);
  • Se se requiere funcionalidad adicional se puede definir una subclase de AbstractTableModel


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal