Download - Interface Grafica de Usuario
ALGORITMICA II
Interfaz Grafica de Usuario (GUI)
Profesor: Carlos A. Ruiz De La Cruz MeloCorreo: [email protected]
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
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
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
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
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