Ver tutoriales de Boris berkley en youtube interfaz grafica Netbeans (revisarlos todos los de java, interfaz grafica). http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/10/8eEtmYrgIJQ http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/9/0eJaNvpPT8c http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/8/0THm1fwBTH8 http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/7/AKDWKiUzOwA http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/6/PRUC_pXIVew http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/5/hNjlmhDvwVw http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/4/K1Ud_EesoRI http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/3/TApSolmzfCY http://www.youtube.com/user/borisberkley#p/c/5BAE508026F6B3C5/2/VDpHmy1LJyE
Para trabajar con la parte grfica cuando trabajemos en Netbeans ser con programas JFrame Form (ya no Java class) Dentro de la aplicacin donde tenemos los programas, al crear uno nuevo ser New programs JFrame Form.
Pngale nombre al programa swing1 Aparece una ventana con un rectngulo vacio, es el rea de diseo de la ventana y al lado derecho una Paleta con men de opciones de herramientas a usar en el Frame. El rectngulo es el esquema de lo que se ver en la pantalla, el diseo, el frame Dentro de las opciones de la Paleta estn las de swing control que usaremos
Marcela Schindler Nualart 2
Estos controles son distintas herramientas para poner en el frame como botones, scroll, leyendas, cajones que leern informacin, entre otras Las que ms usaremos son: Label: etiqueta que sirve para mostrar un texto. Por ejemplo: Ingresa un nmero: Textfield: campo que sirve para leer informacin ingresada por el usuario. Button: botn que al presionar hace algo. Un tem que puede ser seleccionado o no tem para seleccionar unidades Un tem que puede ser seleccionado o no tem que permite seleccionar entre una lista de opciones.
Marcela Schindler Nualart 3
Ejemplo 1 Tome la que dice Label y arrstrela a la ventana. Lo mismo para Button y TextFiel, ordnelas como se muestra en la figura.
Cambiar el texto label1, con el cual se ver en pantalla Muestra, eso se hace haciendo un clic en el elemento, aparece un men y selecciona Edit Text: y digitar Muestra. De la misma forma para eliminar Texfiel1 y en Button1 se vea Presiona Para cambiar el nombre de las variables se procede en forma similar. Para cambiar el nombre de label1 clic sobre ella y seleccione Change Variable Name, digite lmuestra, l de label y muestra para recordar que escribe el label, para Texfieldl1 ponga texto, y para button1 boton. Si corremos el programa con Run/Run File se ver como est quedando nuestro programa: Se ve una ventana con los elementos. Si presionamos el botn no pasa nada Cierre la ventana Debemos codificar que es lo que queremos que haga cuando se presione el botn. Para ello debemos presionar doble clic sobre Presiona, que nos cambiara de lengeta de la Design a la Source. Marcela Schindler Nualart 4
Y veremos
Nos lleva con el cursor a botonActionPerformed que es el lugar que indica el botn ha sido presionado. En ese lugar escribimos texto.setText(Hola); Que indica que en el campo texto lo seteemos, modifiquemos y que ahora aparezca Hola Ejecutmoslo ahora con Run /RunFile y presionemos el botn Presiona
Cierre la ventana de ejecucin. Si desea volver al esquema de Diseo seleccione la lengeta Design. Marcela Schindler Nualart 5
Ejemplo 2
Este programa se llama swing5, es un JFrame Form El primer label se llama l1, esta seleccionado, si ve a mano derecha en Properties se ve el nombre de la variable, el Font modificado a 14 y muestra en pantalla Valor1 El label 2 se llama l2 y se cambio el Font a tamao 14 y bold. y muestra en pantalla Valor2 El label 3 se llama l3 y se cambio el Font a 14 e Italic y muestra en pantalla Suma. Adems el background es verde, el cual tambin se modifica en Properties. Las variables del programa son: // Variables declaration - do not modify private javax.swing.JButton b1; private javax.swing.JLabel l1; private javax.swing.JLabel l2; private javax.swing.JLabel l3; private javax.swing.JTextField t1; private javax.swing.JTextField t2; private javax.swing.JTextField t3; // End of variables declaration Marcela Schindler Nualart 6
Para este programa se espera que el usuario ingrese dos nmeros, uno en cada textfield, y al presionar el botn Calcular se muestre en el tercer textfiel la suma de ambos. Para ello, presionar el botn calcular dos veces, nos lleva a la ventana Source, al la accin del botn b1 cuando es ejecutado, en el mtodo actionPerformed. Aqu debemos capturar el dato del texto 1, t1, con el mtodo getText(), el valor recibido, un string se debe transformar a doubl con el mtodo Double.parseDouble() y asignarlo a una variable double valor1,valor2; valor1= Double.parseDouble(t1.getText());
Lo mismo para recuperar el valor de t2 valor1= Double.parseDouble(t1.getText());
Luego sumar ambos valores y almacenarlo en una variable valor1=valor1+valor2; Despus el valor obtenido se debe poner en el texto t3, con el mtodo setText(String), como valor1 es double le agregamos un espacio t3.setText(valor1+); As se ve en Source:
Si ejecutamos el cdigo se ve: Marcela Schindler Nualart 7
Ejercicio hacer.
Marcela Schindler Nualart 8
Ejemplo 3. Usar radiobutton, y agrupacin de botones
// Variables declaration - do not modify private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JLabel ltitulo; private javax.swing.JRadioButton ramarillo; private javax.swing.JRadioButton razul; private javax.swing.JRadioButton rrojo; Si se hace doble clic en rrojo, cambiamos el color de las letras del ttulo a rojo private void rrojoActionPerformed(java.awt.event.ActionEvent evt) { this.ltitulo.setForeground(Color.red); } Si se hace doble clic en ramarillo, cambiamos el color de las letras del ttulo a rojo private void ramarilloActionPerformed(java.awt.event.ActionEvent evt) { this.ltitulo.setForeground(Color.yellow); } Si se hace doble clic en razul, cambiamos el color de las letras del ttulo a rojo private void razulActionPerformed(java.awt.event.ActionEvent evt) { this.ltitulo.setForeground(Color.blue); }
Falta seleccionar y agrupar rrojo debe partir como seleccionado en Propiedades seleccione selected Si se ejecuta y se selecciona amarillo, quedan ambas seleccionadas
Marcela Schindler Nualart 9
Para slo seleccionar una a la vez: Llevar un botn de tipo Button Group a un rea de diseo vaca. Ahora seleccione rrojo y en propiedades en button group elija buttongroup1 Hacer lo mismo para amarillo y azul. Esto har que los tres botones estn agrupados y uno solo de ellos este seleccionado.
Ejemplo 4. Como usar comboBox. En este ejemplo se puede elegir entre Rojo, amarillo o azul, se despliega un rea de panel el color seleccionado.
Marcela Schindler Nualart 10
// Variables declaration - do not modify private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1;
Para darle tems al combo box, se debe colocar los tems en el constructor public class swing82 extends javax.swing.JFrame { public swing82() { initComponents(); this.jComboBox1.addItem("Ingresa"); this.jComboBox1.addItem("Rojo"); this.jComboBox1.addItem("Amarillo"); this.jComboBox1.addItem("Azul"); } Ahora hay que hacer algo por cada tem, cuando ingrese rojo el panel se pondr rojo
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int indice=this.jComboBox1.getSelectedIndex(); if(indice==1) this.jPanel1.setBackground(Color.red); else if(indice==2) this.jPanel1.setBackground(Color.yellow); else if(indice==3) this.jPanel1.setBackground(Color.blue); }
Ejemplo 5 Aqu usaremos la opcion JCheckBox, que permite seleccionar o no un color si selecciona dos, se ejecutan ambas. Ac el panel se pinta segn la combinacin de JCheckBox seleccionados. Marcela Schindler Nualart 11
Usaremos el evento cuando se selecciona un checkbox y el mouse se mueve revisa cual es seleccionado y se pone el panel de ese color. private void formMouseEntered(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(this.azul.isSelected() && !amarillo.isSelected() &&!rojo.isSelected()) jPanel1.setBackground(Color.blue); if(this.rojo.isSelected()&&!this.azul.isSelected() && !amarillo.isSelected()) jPanel1.setBackground(Color.red); if(this.amarillo.isSelected()&&!this.rojo.isSelected()&&!this.azul.isSelected()) jPanel1.setBackground(Color.yellow); if(this.azul.isSelected() && amarillo.isSelected() &&!rojo.isSelected()) jPanel1.setBackground(Color.GREEN); if(this.azul.isSelected() && rojo.isSelected()&& ! amarillo.isSelected()) jPanel1.setBackground(Color.MAGENTA); if(this.amarillo.isSelected() && azul.isSelected() &&rojo.isSelected()) jPanel1.setBackground(Color.DARK_GRAY); if(this.rojo.isSelected() && amarillo.isSelected() &&!azul.isSelected()) jPanel1.setBackground(Color.orange); if(this.amarillo.isSelected() && azul.isSelected() && !rojo.isSelected()) jPanel1.setBackground(Color.green); } Marcela Schindler Nualart 12
Ejemplo 6 Usaremos spinner. Con el spinner se indica la cantidad de unidades, en el text field cual es el precio y presionando el botn se muestra el resultado de la multiplicacin.
Ejemplo 7. Lista. Se ingresan elementos a la lista, tambin se puede seleccionar de la lista elementos y estos eliminarlos, o derechamente limpiar la lista y dejarla vaca
En este programa se usar un componente que puede seleccionar uno o ms campos de una lista, un botn para agregar, uno que elimina un elemento de la lista que este seleccionado y uno que limpia toda la lista (los borra todos), un textfield para leer datos.
Se debe declarar una variable que maneje la insercin y eliminacin de elementos en la lista, esta se debe colocar al comienzo de la clase, como variable global public class swing9 extends javax.swing.JFrame { DefaultListModel dim=new DefaultListModel();
Para agregar un elemento se debe presionar el botn Agregar, luego en el cdigo en el mtodo action performed del botn agregar se debe: private void bagregarActionPerformed(java.awt.event.ActionEvent evt) { //obtener el numero ingresado por el usuario en el campo de texto, para que no tome en cuenta los espacios se usa el // mtodo trim() que los elimina int numero=Integer.parseInt(this.tnumero.getText().trim()) ; //agrega el nmero al manejador dim dim.addElement(numero); //dim modifica la lista this.jList1.setModel(dim); //el campo de texto se deja vacio this.tnumero.setText(""); //vuelve el cursor a textfield para que quede esperando otro numero this.tnumero.requestFocus(); // se obtiene la cantidad de elementos de la lista int cantidad=dim.size(); // en el label cant se pone la cantidad this.cant.setText(cantidad+""); } Marcela Schindler Nualart 15
Para el botn eliminar: private void belimimarActionPerformed(java.awt.event.ActionEvent evt) { // capturamos de elementos de la lista el que esta seleccionado int indice= this.jList1.getSelectedIndex(); //de dim se remueve el elemento this.dim.removeElementAt(indice); //se entrega el nuevo dim a lista this.jList1.setModel(dim); //el nuevo largo de lista se captura int cantidad=dim.size(); //se modifica el label con la nueva cantidad de elementos this.cant.setText(cantidad+""); }
Para limpiar completamente la lista y dejarla vaca private void blimpiarActionPerformed(java.awt.event.ActionEvent evt) { //elimina todos los elementos de dim this.dim.removeAllElements(); //el nuevo dim se agrega a lista this.jList1.setModel(dim); //el largo de dim se guarda en cantidad, podria directamente ponerse cero... int cantidad=dim.size(); //la cantidad setea a cant this.cant.setText(cantidad+""); }
Ejemplo 8 Usa dos ventana, cuando se presiona el botn mostrar aparece una ventana jdialog con el nombre y apellido juntos.
Marcela Schindler Nualart 16
En este programa debemos trabajar con dos ventanas, en una recibimos los datos y en la otra los mostramos. La ventana Padre es un Jframe form y la ventana hijo es un jdialog (ver que en el contorno se puede solo cerrar). Para la ventana padre: Necesitamos 2 label, 2 textfield, un botn. // Variables declaration - do not modify son las herramientas de swing que se usaron private javax.swing.JButton bmostrar; private javax.swing.JLabel lApellido; private javax.swing.JLabel lNombre; private javax.swing.JTextField tapellido; private javax.swing.JTextField tnombre;
Para el botn debemos recuperar el nombre y el apellido que son de tipo String y guardarlos juntos en una variable. private void bmostrarActionPerformed(java.awt.event.ActionEvent evt) { String nombre,apellido,nombreCompleto; nombre=this.tnombre.getText(); apellido=this.tapellido.getText(); nombreCompleto=nombre+ " "+ apellido; SwingHijo h = new SwingHijo(new swingPadre(),true, nombreCompleto); h.setVisible(true); } Lo prximo es crear la ventana hijo y enviar el nombrecompleto Para ello debemos crear un objeto de tipo hijo, y llamar al constructor, los parmetros quien la llama, la ventana padre, true y el String con el nombre completo SwingHijo h = new SwingHijo(new swingPadre(),true, nombreCompleto); Luego debemos dejar visible esa ventana. h.setVisible(true);
Para la clase SwingHijo: Debemos crear un constructor que reciba el String con el nombre completo, para eso copiamos el ya existente El constructor existente es: public SwingHijo(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); } Marcela Schindler Nualart 17
Se le agrega el String, el resto se deja igual, y al label del hijo se le llena con el nombre completo al constructor nuevo public SwingHijo(java.awt.Frame parent, boolean modal,String nombreCompleto) { super(parent, modal); initComponents(); this.jLabel1.setText(nombreCompleto); }
// Variables declaration - do not modify private javax.swing.JLabel jLabel1;
Ejemplo 9 Se usaran dos ventanas, en una se recopila la informacin y cuando se presiona el botn generar se llama a la otra con los datos previos. Este ejemplo rene los botones revisados previamente en los ejemplos.
Para la clase swingElectrodomesticos, la ventana base Los items usados son: // Variables declaration - do not modify private javax.swing.JButton Generar; private javax.swing.JButton Nuevo; private javax.swing.JButton Salir; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JComboBox jComboBox1; Marcela Schindler Nualart 18
Donde los items jCheckBox1, ComboBox1, jRadioButton1, jSpinner1, se convinan entre ellos.
Para darle valores a los tems del comboBox en el constructor de la clase se agregan las opciones.
public swingElectodomesticos() { initComponents(); //llena los items del combobox, estos deben ser reconocidos //en todas partes, luego se deben declarar en el constructor this.jComboBox1.addItem("Seleccione"); this.jComboBox1.addItem("Televisor"); this.jComboBox1.addItem("Radio "); this.jComboBox1.addItem("Notebook"); this.jComboBox1.addItem("Video "); this.jComboBox1.addItem("Netbook "); }
Lo siguiente es dada la opcin que se seleccione debe mostrarse el precio asociado a este tem, luego aqu es importante la posicin del tem, donde la posicin es para seleccione, la 1 para Televisor. private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
int indice; double precio=0.0; indice= this.jComboBox1.getSelectedIndex();
Marcela Schindler Nualart 19
switch(indice){ case 1: precio=200000; break; case 2: precio=80000; break; case 3: precio=500000; break; case 4: precio=100000; break; case 5: precio=300000; } this.tprecio.setText(precio+" "); }
Cuando se presiona el botn Generar se debe recuperar la informacin y entregarla a la otra ventana.
private void GenerarActionPerformed(java.awt.event.ActionEvent evt) { // en este botn se debe recuperar toda la informacin y as generar la boleta o factura de pago
String cliente,producto,documento=""; double precio,subtotal,descuento,total; int cantidad; cliente=this.tcliente.getText(); //el tem selecionado del combobox se pasa a string y se almacena en una variable producto=this.jComboBox1.getSelectedItem().toString(); // el precio de tprecio de tipo string se convierte a double precio=Double.parseDouble(this.tprecio.getText()); // el valor almacenado en el spinner se pasa a string y se convierte a entero cantidad=Integer.parseInt(this.jSpinner1.getValue().toString());
subtotal=cantidad*precio; descuento=0; //aqu se verifica si fue seleccionado el checkbox para hacer o no el descuento if(this.jCheckBox1.isSelected()) descuento=.15*subtotal; //se verifica si es boleta o factura if(this.jRadioButton1.isSelected()) documento="Boleta"; else documento="Factura";
total=subtotal-descuento; //se crea un objeto de tipo swingElectro2 para que se cree la otra ventana, se le pasa la informacin recolectada Marcela Schindler Nualart 20
swingElectro2 p= new swingElectro2(new swingElectodomesticos(), true, documento, cliente, producto, precio, cantidad, subtotal, descuento, total); //se hace visible la nueva ventana p.setVisible(true); } Si se desea crear un pedido nuevo y borrar lo ya hecho. Se vuelven los tems a cero private void NuevoActionPerformed(java.awt.event.ActionEvent evt) { this.tcliente.setText(""); this.jComboBox1.setSelectedIndex(0); this.tprecio.setText("0.0"); this.jSpinner1.setValue(0); this.jCheckBox1.setSelected(false); this.jRadioButton1.setSelected(true); this.tcliente.requestFocus(); } Si se desea salir y no seguir con el programa private void SalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }