Interface Grafica de Usuario

34
ALGORITMICA II Interfaz Grafica de Usuario (GUI) Profesor: Carlos A. Ruiz De La Cruz Melo Correo: [email protected]

Transcript of Interface Grafica de Usuario

ALGORITMICA II

Interfaz Grafica de Usuario (GUI)

Profesor: Carlos A. Ruiz De La Cruz MeloCorreo: [email protected]

Crear un proyecto para una GUI

Deje en blanco estas casillas

Colocar un jFrame en el Proyecto

Click derecho en <default package>

GUI creadajFrame o base para

colocar otros objetos

Paleta que contiene todos los objetos

Ventana de Propiedades o atributos de los objetos

Ventana para navegar entre los objetos seleccionados

Uso del jTextField

Conversión de grados centígrados a Fahrenheit, y viceversa. El programa requiere una interfaz, de manera que cuando introduzca en una caja una temperatura en grados centígrados y presione enter, en la otra caja se visualice la temperatura equivalente en grados Fahrenheit, y cuando en esta otra caja se introduzca una temperatura en grados Fahrenheit al presionar enter en la primera se visualice la temperatura correspondiente en grados centígrados.

A continuación se da una de las formulas de conversión:

Grados centígrados = (grados Fahrenheit - 32) * 5 /9

Ejemplo; Si se ingresa 50 grados centígrados debe obtenerse 122 grados fahrenheit

Uso del jTextField

Objeto textjLabel Grados Centigrados

jLabel Grados Fahrenheit

jTextField Se deja en blanco

jTextField Se deja en blanco

Uso del jTextField

if(evt.VK_ENTER==evt.getKeyCode()){ double grafahrenheit=Float.parseFloat(jTextField2.getText()); double gradoscentígrados = (grafahrenheit - 32) * 5 /9; Double t=new Double(gradoscentígrados); String a= t.toString(); jTextField1.setText(a); }

if(evt.VK_ENTER==evt.getKeyCode()){ double gracentigrados=Float.parseFloat(jTextField1.getText()); double grafahrenheit = (9*gracentigrados)/5+32; Double t=new Double(grafahrenheit); String a= t.toString(); jTextField2.setText(a); }

Events-Mouse-mousePressed

Events-Mouse-mousePressed

Uso del jList

Objeto textjLabel ingrese

jLabel posicion

jTextField Se deja en blanco

jButton Aceptar

jButton Eliminar

jButton Insertar

jList No tiene este campo

import javax.swing.DefaultListModel;

public class NewJFrame extends javax.swing.JFrame { /** Creates new form NewJFrame */ DefaultListModel modelo =new DefaultListModel(); public NewJFrame() { initComponents(); jList1.setModel(modelo); }

Se adicionan las siguientes instrucciones

Uso del jList

Uso del jListmodelo.addElement(jTextField1.getText()); jTextField1.setText(""); jTextField1.requestFocus();

int p;try{ p =jList1.getSelectedIndex(); modelo.removeElementAt(p); Integer t=new Integer(p); jLabel2.setText(t.toString()); } catch(Exception e){ }

int p =jList1.getSelectedIndex(); modelo.add(p,jTextField1.getText()); jTextField1.setText(""); jTextField1.requestFocus();

int posicion; if(evt.getClickCount() == 1){ posicion =jList1.getSelectedIndex(); Integer tira=new Integer(posicion); jLabel2.setText("posicion="+tira.toString()); } else{ posicion =jList1.getSelectedIndex(); Object tira=modelo.getElementAt(posicion); jLabel2.setText(tira.toString()); }  

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

Uso del jTabbedPane y jTable

Se creara una interface con dos pestañas una para el ingreso de datos y la otra pestaña para visualizar la información como se observa abajo

Disposición de los objetos

e[i]=new EMPLEADO(); e[i].capnombre(jTextField1.getText()); e[i].capsueldo(jTextField2.getText()); i++; jTextField1.setText(""); jTextField2.setText("");

for (int r=0; r < i; r++){ jTable1.setValueAt(e[r].retnombre(),r,0); jTable1.setValueAt(e[r].retsueldo(),r,1); }

import java.io.*;class EMPLEADO{ private String nombre; private String sueldo; void capnombre(String n){ nombre=n; } void capsueldo(String s){ sueldo=s; } String retnombre(){ return nombre; } String retsueldo(){ return sueldo; } }public class NewJFrame extends javax.swing.JFrame { /** Creates new form NewJFrame */ EMPLEADO e[]= new EMPLEADO[10]; int i=0; public NewJFrame() { initComponents(); }

Se adiciona el siguiente código

Adición de código a los objetos

Tiene por finalidad,la edición del jTable

Adición de código a los objetos

Uso de Menús y mas de un jFrame

Interface que utiliza mas de un jFrame

Objetos involucrados

Código de los Objetos

jFrame1.setBounds(100,100,300,200); jFrame1.setVisible(true);

jFrame2.setBounds(100,100,300,200); jFrame2.setVisible(true);

System.exit(0);

jFrame1.setVisible(false);

jFrame2.setVisible(false);

Events-Action-actionPerformed

Events-Action-actionPerformed

Events-Action-actionPerformed

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

Uso de Boton de opcion y Grupo de botones

Objeto text border buttonGroup

jLabel4 0bjetos

jLabel5 clases

jLabel1 vacio sombreado

jLabel2 vacio Sombreado

jLabel3 vacio biselado

jRadioButton1 Perro buttonGroup1

jRadioButton2 Gato buttonGroup1

jRadioButton3 Loro buttonGroup1

jRadioButton4 Pato buttonGroup1

jRadioButton5 mamifero buttonGroup2

jRadioButton6 ave buttonGroup2

jLabel1.setText(jRadioButton1.getText()); ImageIcon imageIcon = new ImageIcon("perro.jpg"); jLabel3.setIcon(imageIcon);

jLabel1.setText(jRadioButton2.getText()); ImageIcon imageIcon = new ImageIcon("gato.jpg"); jLabel3.setIcon(imageIcon);

jLabel1.setText(jRadioButton3.getText());ImageIcon imageIcon = new ImageIcon("loro.jpg");jLabel3.setIcon(imageIcon);

jLabel1.setText(jRadioButton4.getText());ImageIcon imageIcon = new ImageIcon("pato.jpg");jLabel3.setIcon(imageIcon);

jLabel2.setText(jRadioButton5.getText());

jLabel2.setText(jRadioButton6.getText());

Codigo asociado a los botones

import javax.swing.*;Se adiciona el siguiente código

Uso de internalFrame

Interface que utiliza un jFrame y dos InternalFrame

Objetos involucrados

Código de los Objetosthis.add(jInternalFrame1); jInternalFrame1.setBounds(10,30,350,250); jInternalFrame1.setVisible(true);

this.add(jInternalFrame2);jInternalFrame2.setBounds(10,30,350,250); jInternalFrame2.setVisible(true);for (int r=0; r < i; r++){ jTable1.setValueAt(e[r].retnombre(),r,0); jTable1.setValueAt(e[r].retsueldo(),r,1); }

System.exit(0);

Events-Action-actionPerformed

Events-Action-actionPerformed

Events-Action-actionPerformed

Events-Mouse-mouseClicked

e[i]=new EMPLEADO(); e[i].capnombre(jTextField1.getText()); e[i].capsueldo(jTextField2.getText()); i++; jInternalFrame1.setVisible(false);

import java.io.*;class EMPLEADO{ private String nombre; private String sueldo; void capnombre(String n){ nombre=n; } void capsueldo(String s){ sueldo=s; } String retnombre(){ return nombre; } String retsueldo(){ return sueldo; } }public class NewJFrame extends javax.swing.JFrame { /** Creates new form NewJFrame */ EMPLEADO e[]= new EMPLEADO[10]; int i=0; public NewJFrame() { initComponents(); } :

Uso del jFileChooser

Objeto textjButton1 Abrir

jButton2 guardar

jTextField1 Se deja en blanco

jTextArea Se deja en blanco

jFileChooser

Código de los ObjetosString dire; try { jFileChooser1.setApproveButtonText("Abrir"); jFileChooser1.showOpenDialog(null); File archivo=jFileChooser1.getSelectedFile(); dire = archivo.getPath(); jTextField1.setText(dire); BufferedReader reader = new BufferedReader(new FileReader(archivo)); String linea = reader.readLine(); while (linea != null) { jTextArea1.append(linea + "\n"); linea = reader.readLine(); } } catch (Exception ex) { }

String dire,nombre; try { jFileChooser1.setApproveButtonText("Guardar"); jFileChooser1.showSaveDialog(null); File archivo=jFileChooser1.getSelectedFile(); dire = archivo.getPath(); jTextField1.setText(dire); if (archivo!= null){ FileWriter GUARDADO=new FileWriter(archivo); GUARDADO.write(jTextArea1.getText()); GUARDADO.close(); } } catch (Exception ex) { }

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

import java.io.*;

Se adiciona el siguiente código

Uso del jComboBox

Objeto textjButton1 Aceptar

jButton2 eliminar

jTextField1 Se deja en blanco

jComboBox1

jLabel1 Posicion:

jLabel2 Titulo:

Codigo de los objetos

jComboBox1.addItem(jTextField1.getText()); jTextField1.setText(""); jTextField1.requestFocus();

int p; try{ p =jComboBox1.getSelectedIndex(); Object tira=jComboBox1.getItemAt(p); //getElementAt(p); jLabel2.setText("titulo: "+tira.toString()); jComboBox1.removeItemAt(p); Integer t=new Integer(p); jLabel1.setText("posicion: "+t.toString()); } catch(Exception e){ jLabel1.setText("no hay datos");jLabel2.setText(""); }

Events-Mouse-mouseClicked

Events-Mouse-mouseClicked

Ejercicio 1: Crear una calculadora

Ejercicio 2: Registrar continentes y paises

import javax.swing.DefaultListModel;class CONTINENTE{ String nombrecontinente; void registrar(String c){ nombrecontinente=c; } String retContinente(){ return nombrecontinente; }}

class PAIS{ String nombrepais; String nombrecontinente; void registrar(String c, String p){ nombrepais=p; nombrecontinente=c; } String retContinente(){ return nombrecontinente; } String retPais(){ return nombrepais; }}

public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */

DefaultListModel modelo =new DefaultListModel();

CONTINENTE c[]=new CONTINENTE[10]; PAIS p[]=new PAIS[100]; int i=0; int k=0;

public NewJFrame() { initComponents();

jList1.setModel(modelo); for(int j=0; j<10; j++) c[j]=new CONTINENTE(); for(int j=0; j<100; j++) p[j]=new PAIS(); }

Se adicionan las siguientes clases y el codigo en negrita en el NewJFrame

Codigo adicional

jFrame1.setBounds(100,100,300,200); jFrame1.setVisible(true);

jFrame2.setBounds(100,50,300,200); jFrame2.setVisible(true); modelo.clear(); jComboBox1.removeAllItems(); for(int j=0; j<k; j++) jComboBox1.addItem(c[j].retContinente()); int pos =jComboBox1.getSelectedIndex(); Object tira=jComboBox1.getItemAt(pos);

System.exit(0);

Codigo del jFrame principalEvents-Action-actionPerformed

Events-Action-actionPerformed

Events-Action-actionPerformed

Codigo del jFrame1

int j; p[i].registrar(jTextField1.getText(),jTextField2.getText()); i++; if(k!=0){ j=0; boolean encontro=false; while (j<k && !encontro){ if (jTextField1.getText().equals(c[j].retContinente())) encontro=true; j++; } if(!encontro) c[k++].registrar(jTextField1.getText()); } else c[k++].registrar(jTextField1.getText()); jTextField1.setText(""); jTextField2.setText(""); jFrame1.setVisible(false);

Events-Mouse-mouseClicked

if(evt.getStateChange()==evt.SELECTED){ int pos =jComboBox1.getSelectedIndex(); Object tira=jComboBox1.getItemAt(pos); System.out.println("si sale="+pos); modelo.clear(); for(int j=0; j<i;j++){ if(tira.toString().equals(p[j].retContinente())) modelo.addElement(p[j].retPais() ); }

}

Codigo del jFrame2 Events-Item- itemStateChanged

Escriba una calculadora en java usando la POO que solo haga una operación aritmética, que sume números binarios(por ejemplo 101 +11= 1000 equivalente a 8(10)).

La interface debe ser como se muestra a continuación.

Como dato cabe mencionar que un numero binario es equivalente a uno decimal, asi por ejemplo 110(2)

= 1x22 +1x21+0x20 = 6 o 1111(2) = 1x23+1x22

+1x21+1x20 = 15 y para convertir un decimal a uno binario solo se aplica divisiones sucesivas entre 2 hasta q el cociente no sea mayor q la base (2), entonces el numero se forma tomando los residuos mas el ultimo cociente. Por ejemplo

15 /2 = cociente 7 y residuo 1 7/2 = cociente 3 y residuo 1 3/2 = cociente 1 y residuo 1 Entonces 15(10) es equivalente 1111(2)

Ejercicio 2: calculadora binaria

1. Hacer un programa en java usando la POO y componentes swing para los empleados de una empresa, para diseñar la interface que se muestra con las opciones en los botones siguientes:

•Boton ACEPTAR registrara los datos de los empleados una vez escritos en los cuadros de dialogo.•Boton AVANZAR permite con cada clic ir avanzando hasta el final a la vez que se va visualizando la información de los empleados en los cuadros de dialogo•Boton RETROCEDER similar al boton AVANZAR solo que retrocede hacia el primer registro.•Boton ROTAR AL FINAL hace con cada clic un reordenamiento de los datos moviendo el registro final al inicio.•Boton ROTAR AL INICIO. hace con cada clic un reordenamiento de los datos moviendo el primer registro al final

Ejercicio 3: registrar información