Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Programación > Java


Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 29-may-2009, 22:56   #1
Un poco vago y
 
Avatar de SmartGenius
 
Fecha de Ingreso: mayo-2009
Ubicación: En otro planeta
Amigos 5
Mensajes: 354
Gracias: 0
Agradecido 113 veces en 31 mensajes.
Predeterminado [NetBeans] Creacion de Interfaces Graficas

Un explicacion algo sencilla de como crear intefaces graficas basicas y funcionales con netbeans =D

El Netbeans es un IDE (entorno de desarrollo) para trabajar con Java, es similar al Visual Studio usado para trabajar con Visual Basic.

Empezaremos con algo basico, creando una minicalculadora capaz de sumar numeros, en la cual se demuestra la interaccion entre botones y cajas de texto :P.


1. Creando el Proyecto

- En el menu File > New Project o en el Icono de Nuevo Proyecto (depende de si lo tienen en ingles o español xD )


- En el panel de Categorias selecionar Java, en el panel de proyecto seleccionar Aplicacion Java (Java Application) y luego en siguiente...

- En la caja de texto poner el nombre dle proyecto como "SumadeNumeros"

- Desmarcar la opcion de "carpata dedicada para librerias"

- Marcar la opcion de "Definir como proyecto principal", y desmarcar la opcion de "Crear la Clase Main"

- Luego de esto en finalizar y ya entraremos al IDE a desarrollar nuestra app


2. Creando la Interfaz

Para proceder con la construccion de nuestra interfaz debemos crear un contenedor en el cual pondremos todos los componentes graficos de la aplicacion (Algo asi como el FORM en VB), luego crearemos un componente JForm, el contenedor sera puesto en un nuevo paquete que aparecera en el listado de paquetes.

Creando el contenedor

- En la ventana de proyectos, clic derecho en SumadeNumeros, luego en Nuevo y seleccionan JForm


- Como nombre de clase poner "SumadeNuemrosUI" (el UI nos indica que es la parte grafica)
- Como paquete poner "my.SumadeNumeros"
- Finalizar

Con esto el IDE (NetBeans) crea un nuevo formulario (JForm) y una clase de Nombres "SumadeNumerosUI", dentro de la aplicacion SumadeNumeros y abre el formulario SumadeNumerosUI en modo diseño, luego el paquete my.SumadeNumeros reemplaza al paquete original.

Agregando Componentes

Ahora usaremos la "Paleta" (similar al cuadro de Herramientas en VB) en el cual se muestran los diferentes objetos graficos que podemos usar, los cuales para agregarlos al formularios solo basta con arrastrarlos sobre el mismo...


Empezaremos por usar un JFrame, luego tres JLabels, tres JTextFields y tres JButtons, y los acomodaremos de manera que tengamos un resultado como el siguiente:


Ahora seleccionamos el JPanel y en la pestaña propiedades vamos a seleccionar borde (...) y escogeremos un borde con titulo, en la propiedad de texto pondremos el titulo del Panel como "Suma De Numeros"

Ahora renombraremos los demas componentes, doble clic en jLabel1 y en la propiedad de texto pondremos "Numero 1" y haremos lo mismo para los otros dos jLabels poniendo "Numero 2" y "Resultado". Despues de esto cambiaremos los atributos de texto pero para los jtextFields dejandolos vacios, y cambiaremos los atributos de texto de los tres botones (jButtons) colocando "Sumar", "Limpiar" y "Salir" respectivamente.

Con esto se finalizaria la parte visual, dando un resultado similar a este:


Ahora nos toca agregar la parte de codigo.........

3. Agregando Funcionalidad

Bien, ahora tenemos que agregar funcionalidad a los botones y demas objetos en el formulario, que junto con el codigo formaran una calculadora simple. Para poder agregarle funcionlidad tenemos que manejar el proceso en base a eventos que pasen en nuestra app, tales como el clic en un boton, o la entrada de usuario...etc.

Empecemos con el Boton de Salir, daremos clic derecho sobre el boton y en el menu emergente buscaremos "Eventos --> Accion --> accionRealizada (actionPerformed) "

Con esto el IDE automaticamente agregare el "Handler" que controlara los eventos....que se recibiran mediante un "ActionListener"

Ahora se nos abrira el editor decodigo donde debemos poner lo que queremos que haga el control, en este caso el boton de salida de la plicacion...por lo tanto el codigo seria...

Código:
  private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                     
    System.exit(0);
  }
  
Y con esto el boton de Salir queda funcional, ahora regresaremos a la parte de diseño y realizaremos el mismo proceso para darle funcionalidad a los otros dos botones.

Boton Limpiar:
Código:
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                     
  jTextField1.setText("");
  jTextField2.setText("");
  jTextField3.setText("");
  }
  
Boton Sumar:
Código:
  private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                     
   // Definimos variables de coma flotante (float).
  float num1, num2, result;
  // Transformamos (parse)lo introducido a float.
  num1 = Float.parseFloat(jTextField1.getText());
  num2 = Float.parseFloat(jTextField2.getText());
  // Reaalizamos la suma.
  result = num1+num2;
  // Mostramos el resultado en jTextField3.
  // Pero transformandolo de nuevo a un String
  jTextField3.setText(String.valueOf(result));
  }
  
Con esto el programa esta completo y listo para ponerlo a funcionar... !

4. Corriendo la Aplicacion

En el menu, buscaremos la opcion de "Compilar" (Build) el proyecto, una vez que esto a finalizado procedemos a Ejecutarlo (Run), con lo que visualizaremos en pantalla a nuestra aplicacion corriendo......si por alguna razon sale un error de que el proyecto no tiene una Clase Main, deberan seleccionar my.SumadeNumeros.SumadeNumerosUI como la clase principal y aceptar para que pueda ejecutarse.

Lo Anterior mostrado es para responder a un simple evento mostrado en un Boton, para otros eventos disponibles se puede consultar la ayuda del NetBeans.

Al final, el codigo escrito por nosotros, mas el codigo que automaticamente es agregado por NetBeans y que es el encargado de crear las variables principales y de inicializar el Form debe ser algo parecido a esto...

Código:
/*
 * SumaDeNumerosUI.java
 * Created on 06/03/2009, 12:37:47
 */

package sumadenumeros;

/**
 * @author SmartGenius
 * From: CodeMakers
 */
public class SumaDeNumerosUI extends javax.swing.JFrame {

  public SumaDeNumerosUI() {
    initComponents();
  }

  @SuppressWarnings("unchecked")

  private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jTextField2 = new javax.swing.JTextField();
    jTextField3 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Suma de Numeros"));

    jLabel1.setText("Numero 1");

    jLabel2.setText("Numero 2");

    jLabel3.setText("Resultado");

    jButton1.setText("Limpiar");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton1ActionPerformed(evt);
      }
    });

    jButton2.setText("Sumar");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton2ActionPerformed(evt);
      }
    });

    jButton3.setText("Salir");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton3ActionPerformed(evt);
      }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
        .addContainerGap()
        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addComponent(jLabel2)
          .addComponent(jLabel3)
          .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
            .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTextField3, javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
              .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
              .addGap(18, 18, 18)
              .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
              .addGap(18, 18, 18)
              .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)))
          .addComponent(jLabel1))
        .addContainerGap())
    );
    jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
        .addContainerGap()
        .addComponent(jLabel1)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
        .addComponent(jLabel2)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
        .addComponent(jLabel3)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
        .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
          .addComponent(jButton2)
          .addComponent(jButton1)
          .addComponent(jButton3))
        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    );
    layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    );

    pack();
  }

  private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                     
    System.exit(0);
  }                    

  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                     
  jTextField1.setText("");
  jTextField2.setText("");
  jTextField3.setText("");
  }                    

  private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                     
  float num1, num2, result;
  num1 = Float.parseFloat(jTextField1.getText());
  num2 = Float.parseFloat(jTextField2.getText());
  result = num1+num2;
  jTextField3.setText(String.valueOf(result));
  }                    

  public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
        new SumaDeNumerosUI().setVisible(true);
      }
    });
  }

  private javax.swing.JButton jButton1;
  private javax.swing.JButton jButton2;
  private javax.swing.JButton jButton3;
  private javax.swing.JLabel jLabel1;
  private javax.swing.JLabel jLabel2;
  private javax.swing.JLabel jLabel3;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JTextField jTextField1;
  private javax.swing.JTextField jTextField2;
  private javax.swing.JTextField jTextField3;

}
  
Y eso es todo...tenemos nuestra app andando =D

Saludos ! =)
__________________

[Solo usuarios registrados pueden ver los links. REGISTRARSE]

|

[Solo usuarios registrados pueden ver los links. REGISTRARSE]

SmartGenius está desconectado   Responder Citando
Antiguo 12-jun-2009, 10:12   #2
Habitual
 
Fecha de Ingreso: septiembre-2005
Amigos 0
Mensajes: 201
Gracias: 0
Agradecido 0 veces en 0 mensajes.
Predeterminado Re: [NetBeans] Creacion de Interfaces Graficas

Muuuy bueno :: SmartGenius™ ::, sin duda es un lenguaje de programacion muy util y potente. Para obtener un "ejecutable" de nuestro proyecto tenemos que ir Ejecutar>>Build Main Project, dentro de la carpeta de nuestro proyecto nos habra creado una carpeta llamada "dist" en donde tendremos un archivo con extension .jar ... Para poder ejecutarlo obviamente necesitamos de la jvm.
subsix está desconectado   Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
Los nuevos MacBooks empeoran sus interfaces SATA lili2008200820082008 Noticias Tecnologicas 0 21-jun-2009 11:29
Curso de interfaces graficas en Python [TKinter] Erik# Python 10 05-mar-2009 07:21
Programación de Interfaces Gráficas con Perl y Gtk Doddy Perl 0 11-feb-2009 17:24
Que gestor de interfaces graficas me recomiendan suriv Carbide C/C#/C++ 0 21-ago-2008 23:23
Interfaces entre C y Ensamblador Strike Noir Carbide C/C#/C++ 2 20-mar-2007 10:56



Portal Hacker
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0