Hola Mundo en NetBeans con SWING
sábado, 15 de agosto de 2009
En esta oportunidad crearemos una pequeña aplicación que utilice la GUI de SWING.
Manos a la obra...
Lo primero, creamos una Nueva Java Application, y le damos el nombre appEjemploSWING, luego en los "Source Packages" agregamos un nuevo package llamado ejemplo. Finalmente agregamos una JFrame Form al package recién creado, y lo llamados frmEjemplo.
Al realizar esto agregamos una JFrame que corresponde a un formulario de nivel superior en SWING.
Después de realizado lo anterior se debería ver como sigue.
En la ventana anterior se puede apreciar el Diseñador Matisse, que trae incoporado NetBeans, además de la Paleta de Controles y la Ventana de Propiedades.
En la ventana de propiedades, cambiamos las propiedades title (título del JFrame), por "Ejemplo con SWING" (sin comillas), y también podemos desmarcar la propiedad Resizable, para que no podamos modificar el tamaño del JFrame en tiempo de ejecución.
Luego, arrastramos desde la Paleta de Controles SWING los siguientes controles: 1 Label (jLabel), 1 TextField (jTextField), y un Button (jButton). Como es un ejemplo básico no entraré en muchos detalles, ni tampoco estableceré sus respectivas propiedades Name.
Lo siguiente sería cambiar las propiedades text de cada uno de ellos para que el formulario quede de la siguiente forma:
El siguiente paso será escribir cierto código que nos permita 2 cosas: mejorar la apariencia del JFrame, y realizar el saludo cuando presionemos el Button.
Entonces...
... nos vamos a la ventana de código, presionándo el ToggleButton "Source", que se encuentra al lado izquierdo de Design.
Bajo package ejemplo, incorporamos:
import javax.swing.*;
y bajo la declaracion: public void run() {, incorporamos:
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);

Volvemos a la vista de Diseño (Design), y hacemos doble click sobre el Button, se vuelve a abrir la vista de código, y en lugar en que aparece el cursor, escribimos:
JOptionPane.showMessageDialog(this, "Hola " + jTextField1.getText(),
"saludos",JOptionPane.INFORMATION_MESSAGE);
Lo probamos, y el programa corriendo queda...
El código del programa, incluyendo el código generado por NetBeans es el siguiente.
/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/
/*
* frmEjemplo.java
*
* Created on 15-08-2009, 11:49:12 AM
*/
package ejemplo;
import javax.swing.*;
/**
*
* @author Fabián Silva
*/
public class frmEjemplo extends javax.swing.JFrame {
/** Creates new form frmEjemplo */
public frmEjemplo() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Ejemplo con SWING");
setResizable(false);
jLabel1.setText("Ingrese su nombre:");
jButton1.setText("Saludar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 257,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1))
.addComponent(jLabel1))
.addContainerGap(30, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(42, 42, 42)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addContainerGap(81, Short.MAX_VALUE))
);
pack();
}//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(this, "Hola " + jTextField1.getText(),
"saludos",JOptionPane.INFORMATION_MESSAGE);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
new frmEjemplo().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
Se sugiere no modificar el método InitComponents, ya que éste es generado automáticamente por el diseñador.
Publicado porfwsp en 8:42
Etiquetas: JFrame, Matisse, NetBeans, SWING

Era buena la iniciativa. Deberías retomarla. Se agradecería.