
Gamel Digital
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas


No usar mapeo para servlets en JBoss
Si no desea mapear cada servlet en web.xml del JBoss y desea llamarlos directamente incluyendo el paquete y el nombre del Servlet, entonces agregue lo siguiente en el archivo web.xml de la aplicacion.
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
Gamel Digital: Java - No usar mapeo para servlets en JBoss


Como instalar el Plugin de TOMCAT en Eclipse
1. Obtener el apache-tomcat-6.0.16.zip desde http://tomcat.apache.org/
2. Instalar tomcat en la PC
3. Obtener el Sysdeo desde http://www.eclipsetotale.com/tomcatPlugin.html
4. Copiar el contenido de tomcatPluginV321.zip (com.sysdeo.eclipse.tomcat_3.2.1) en D:\java\eclipse_3.3.1.1\plugins
5. En eclipse revisar el menú Windows/Preferences/Tomcat, tambien revise el java que esta utilizando:
Gamel Digital: Java - Como instalar el Plugin de TOMCAT en Eclipse


Como instalar y crear un proyecto en Eclipse (Java)
Instalación del Eclipse:
Antes debe instalar el java.
Obtenga eclipse de http://www.eclipse.org/downloads/index.php
Coloquelo en D:\ eclipse-SDK-3.0.1-win32.zip
Desempaquetar el ZIP en el directorio D:\eclipse
Al final debe quedar la estructura :
D:\eclipse con los subdirectorios : configuration, features, plugins, readme.
Cree un archivo D:\eclipse\eclipse.cmd
Editelo y escriba la ruta del java.
eclipse -vm D:\java\j2sdk_nb\j2sdk1.4.2\bin\javaw.exe
Crear un acceso directo a D:\eclipse\eclipse.cmd en su escritorio o menú.
Ejecutelo
Configuración del Eclipse
Ejecutar el Eclipse
Escoger File -> New -> Project
Escoger Java -> Java Project
Crear el proyecto: st232
Dar Finish
Crear el paquete st232
Hacer File -> New -> Package
Cree la clase Película
Redacte los atributos de Película.java
private int codigo;
private String titulo;
private float precio;
private static int contador = 2000;
Genere los constructores de la clase.
Clic derecho sobre Película.java -> Source -> Generate Constructors using Fields.
Modifique el codigo como sigue:
public Pelicula(String titulo, float precio) {
this.titulo = titulo;
this.precio = precio;
Tambien cree los metodos set y get
Clic derecho sobre Película.java -> Source -> Generate Getters and Setters.
Agregue el metodo toString()
public String toString() {
Cree una nueva clase llamada PelículasTest.java con el metodo main.
public static void main(String[] args) {
float precio = Float.parseFloat(args[1]);
Pelicula pelicula = new Pelicula(titulo,precio);
System.out.println(pelicula);
Para ejecutarlo directamente hacer
Run -> Run As -> 2 Java Aplication
Para ejecutarlo indicando parámetros de main hacer:
Run -> Run. . .

Como instalar y configurar JCreator en Windows
1. Debe en su PC contar el JDK que se obtiene de http://java.sun.com/
2. Copiar en la PC en un directorio D:\java el JCreatorV3LE.zip y desempacarlo
(Una guia de problemas para Jcreator se encuentra en http://www.jcreator.com/faq.htm)
3. Ingresar a la carpeta D:\java\JCreatorV3LE\JCreatorV3LE y correr el exe JCreator.exe
4. Seleccionar .java como asociación de archivos (Next)
5. Ubicar el JDK con el boton Browse y seleccionarlo (Next)
6. No es necesario contar con los JavaDoc asi que puede terminar la instalación.
7. Les muestra el entorno de trabajo de JCreator.
8. Puede observar con cual versión de JDK esta trabajando si ingresa al menú
Configure / Options / JDK Profiles / Edit (Cancel Cancel)
En caso no cuente con el JDK tendra agregar uno con el boton New
9. Cree un nuevo proyecto de trabajo.
File / New / Project
10. Seleccione una Aplicación de Java Básico
11. Nombre a su proyecto como labs (Finish)
12. Compile el proyecto con el menú Build / Compile Project
13. Ejecute el programa con Build / Execute Project
14. Agregue su propio archivo java al proyecto y nómbrelo como Hola.java (Finish)
15. Grabe el código ( File / Save), compílelo (Build / Compile File) y ejecútelo (Build / Ejecute File)
La compilación no debe contener errores.
16. Para activar la línea de comandos en JCreator
Elija Configure/ Options del menú.
Seleccione JDK Tools
Seleccione Run Application
Presione Edit.
Se mostrara la configuración del JDK
Habilite con un checkbox Prompt for main method arguments

Como instalar JAVA en Windows (incluye una prueba basica con Notepad)
Cree una carpeta D:\st232 (puede crearla con cualquier otro nombre y será alli donde se encontrara la carpeta Java)
Ejecutar jdk-1_5_0_03-windows-i586-p.exe . Se obtiene de http://java.sun.com/. J2SE 5.0 Download JDK 5.0 Update 3
Aceptar Licencia
Seleccionar items y ruta a instalar del JSDK
Seleccionar ruta e instalar JRE
Registrar java en Browsers
Instalacion terminada
Configurar el PATH y CLASSPATH y realizar un test
D:\st232>set CLASSPATH=D:\st232\Java\jre1.5.0_03;%CLASSPATH%
D:\st232>set PATH=D:\st232\Java\jdk1.5.0_03\bin;%PATH%
D:\st232>javac –version
D:\st232>java –version
D:\st232>notepad Hola.java
/* Primer programa java */
public class Hola {
D:\st232>javac Hola.java
D:\st232>java Hola
Hola desde java

Enviar mail con una cuenta gMail de Google en Java
Este es un programa Java que le servira para enviar un mail con su propia cuenta Google y no necesita instalar ni conectarse a un servidor SMTP.
import java.security.Security;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Mail2Google {
private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final String SMTP_PORT = "465";
private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
private static final String emailGoogle = "mi.cuenta@gmail.com";
private static final String emailGooglePassword = "mi.password";
private static final String[] sendTo = {"destinatario@servidor.com"};
public static void main(String args[]) throws Exception {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
String emailSubjectTxt = "Titulo/Subject del mail";
String emailMsgTxt = "Mensaje/Body del mail";
new Mail2Google().sendSSLMessage(sendTo, emailSubjectTxt,
emailMsgTxt, emailGoogle);
System.out.println("Mail enviado a los destinatarios");
}
public void sendSSLMessage(String recipients[], String subject,
String message, String from) throws MessagingException {
boolean debug = false;
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "false");
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailGoogle, emailGooglePassword);
}
});
session.setDebug(debug);
Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
}
}
Gamel Digital: Java - Enviar mail con una cuenta gMail de Google en Java


Colocar comillar a una sentencia SQL
Si desea colocar entre comillas una sentencia SQL y su editor de texto no lo provee; utilice el siguiente enlace:
http://www.gameldigital.com/engine/toolboxnet/entrecomillar.php
Donde podrá convertir:
select 1
from dual
a:
" select 1 "+
" from dual "

El ECLISPE no funciona con el JAVA ya instalado
Si al correr el eclipse le aparece el siguiente mensaje:A java Runtime Environment (JRE) or Java development Kit (JDK) must be available in order to run Eclipse. No Java virtual. machine was found after searching the following locations
Entonces o no cuenta con JAVA o el ECLIPSE no logra reconocer el JAVA
Verifique que el java este instalado, sino vaya a http://java.sun.com para descargarlo.
Si el JAVA si esta instalado, entonces cree un archivo D:\eclipse\eclipse.cmd. Editelo y escriba la ruta del java.
ECLIPSE.CMD (cuidado con la extension)
eclipse -vm "C:\Archivos de programa\Java\jre6\bin\javaw.exe"
Crear un acceso directo a D:\eclipse\eclipse.cmd en su escritorio o menú y ejecutelo.
Gamel Digital: Java - El ECLISPE no funciona con el JAVA ya instalado


Construir el SQL para JAVA desde la descripcion de la tabla en ORACLE
Tiene una tabla en Oracle y desea crear SQL para colocarlo dentro de un programa JAVA; si hay muchas comas y comillas que colocar.
Si usted requiere algo como lo siguiente para colocarlo en su programa
TEXT SQL COLUMN_ID
-------------------------------------------------------- ----- ---------
" ,CUSTOMER_ID = CUSTOMER_ID "+ 1 1
" ,ACCOUNT_NUM = ACCOUNT_NUM "+ 1 2
" ,LNAME = LNAME "+ 1 3
" ,FNAME = FNAME "+ 1 4
" ,CUSTOMER_ID "+ 2 1
" ,ACCOUNT_NUM "+ 2 2
" ,LNAME "+ 2 3
" ,FNAME "+ 2 4
SQL> desc FOODMART.CUSTOMER
Name Null? Type
----------------------------------------- -------- -------------
CUSTOMER_ID NOT NULL NUMBER
ACCOUNT_NUM NOT NULL NUMBER(15)
LNAME NOT NULL VARCHAR2(30)
FNAME NOT NULL VARCHAR2(30)
Entonces utilize el siguiente script en ORACLE para obtenerlo. Solo debera indicar el esquema y la tabla. Y listo, a hacer COPY+PASTE.
-- TABS.SQL
set echo off
rem ***********************************************
rem Columnas
rem ***********************************************
set verify off
set linesize 320
set pagesize 2000
set numwidth 5
clear buffer
accept owner_tabla prompt 'Ingrese esquema.tabla : '
select '" ,'||rpad(COLUMN_NAME,28,' ')||' = '
||rpad(COLUMN_NAME,28,' ')||'"+' TEXT,
1 SQL, COLUMN_ID
from all_tab_cols
where OWNER||'.'||TABLE_NAME = trim(upper('&owner_tabla'))
union all
select '" ,'||rpad(COLUMN_NAME,28,' ')||' "+',
2, COLUMN_ID
from all_tab_cols
where OWNER||'.'||TABLE_NAME = trim(upper('&owner_tabla'))
order by SQL, COLUMN_ID
/
clear breaks
set numwidth 9
ttitle off
set verify on
set serverout on size 200000
set pagesize 2000
set linesize 80
Gamel Digital: Java - Construir el SQL para JAVA desde la descripcion de la tabla en ORACLE


10 Curso de Java OO. Swing I
Resumen : Se estudiara el modelo de pantallas en SWING
1. SWING
- Es un conjunto de componentes visuales que son parte del java.
- Son livianos respecto a sus antecesores llamados AWT
- Son independientes de la plataforma.
- El siguiente es un árbol de componentes usados en SWING
- SWING usa la infraestructura de AWT
- A continuación se muestra los componentes visuales.
Componentes de alto nivel para Ventanas JFrame
JDialog
JApplet
JWindow
JInternalFrame
Contenedor de componentes JPanel
JScrollPane
JToolBar
JSplitPane
JTabbedPane
JDesktopPane
Componentes de menu JMenuBar
JMenu
JCheckboxMenuItem
JPopupMenu
JMenuItem
JRadioButtonMenuItem
Componentes de texto JTextField
JTextPane
JPasswordField
JEditorPane
JTextArea
JFormattedTextField
Componentes de complejos JTable
JTree
JFileChooser
JList
JOptionPane
JColorChooser
Controles atomicos JLabel
JButton
JToggleButton
JCheckBox
JRadioButton
JProgressBar
JSpinner
JComboBox
JSlider
JScrollBar
JSeparator
JToolTip
- La siguiente imagen corresponde a una aplicación creada con SWING
2. EL PRIMER PROGRAMA CON SWING
- Este es un ejemplo de las características básicas de una aplicación con SWING.
- Cada programa es SWING esta dividido en:
1. import de paquetes gráficos
2. Configurar el contenedor de alto nivel
3. Mostrar el contenedor
4. Asegurar consistencia del programa. (thread-safe)
2.1. import de paquetes gráficos
- La primera línea incorpora el SWING en el programa
import javax.swing.*;
- En la mayoría de programas se requiere importar además paquetes AWT.
- Estos paquetes se requieren porque SWING usa la infraestructura AWT.
- También usa los eventos AWT.
- Un evento es una acción sobre la aplicación. (presionar un botón, seleccionar un menú...)
import java.awt.*;
import java.awt.event.*;
2.2. Configurar el contenedor de alto nivel
- Cada programa Swing debe tener al menos un contenedor de alto nivel
- Un contenedor de alto nivel muestra y maneja los eventos de sus componentes.
- Se cuenta con tres contenedores de alto nivel: JApplet, JFrame, JDialog.
- JFrame implementa la ventana principal de la aplicación.
- JDialog implementa las ventanas secundarias generadas por otras ventanas.
- JApplet implementa un applet en un browser.
- JFrame implementa los elementos por defecto de una ventana como bordes, titulo, cambio de tamaño, botón para inconizar y cerrar. Estos elementos se llaman decorators. (versión 1.4)
JFrame.setDefaultLookAndFeelDecorated(true);
- La variable frame es un objeto de clase JFrame
- El siguiente código define el contenedor principal.
JFrame frame = new JFrame("HelloWorldSwing");
- Los contenedores de alto nivel (como JFrame) heredan de java.awt.Window
- Los componentes de los contenedores heredan de javax.swing.Jcomponent
- El programa usa un JComponent llamado Jlabel que muestra un texto.
- Estas líneas crean el componente JLabel y lo agregan al contenedor JFrame
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
- El JLabel no se agrega directamente al JFrame, sino a la zona de contenidos (contentPane)
- Todos los contenedores de alto nivel tienen una zona de contenidos
- Los componentes de la ventana se encuentran en esta zona
- No se encuentran en esta zona los menús ni los decorators.
- En la versión 1.5 se evitara la complejidad del contentPane y se podrá utilizar directamente el frame.
- Para que el programa termine al presionar el botón Close se requiere:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2.3. Mostrar el contenedor.
- Para mostrar el contenedor se realiza lo siguiente:
frame.pack();
frame.setVisible(true);
- la primera línea coloca el tamaño de la ventana de acuerdo a sus componentes.
2.4. Asegurar la consistencia.
- Este código asegura que la ventana no se cuelgue antes de mostrarse en pantalla.
javax.swing.SwingUtilities.invokeLater
( new Runnable() {
public void run() { crearMostrarVentana(); }
}
);
2.5. Laboratorio
Modifique el programa cambiando los mensajes del programa. Pruebe los botones de la ventana.
TestSwing.java
import javax.swing.*;
public class TestSwing {
public static void main(String[] args) {
//Enviar una tarea al administrador de eventos
//para que cree y muestre la ventana
javax.swing.SwingUtilities.invokeLater
( new Runnable() {
public void run() { crearMostrarVentana(); }
}
);
}
// Metodo para crear una ventana.
private static void crearMostrarVentana() {
//Asegurarse que contenga los decorators de una ventana.
JFrame.setDefaultLookAndFeelDecorated(true);
//Crear y configurar la ventana
JFrame frame = new JFrame("TestSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Agregar un label que muestre "Hola Mundo!"
JLabel label = new JLabel("Hola Mundo!");
frame.getContentPane().add(label);
//Mostrar la ventana
frame.pack();
frame.setVisible(true);
}
}
3. UNA APLICACIÓN EN SWING
En la aplicación cada vez que se presione el botón, el contador de clicks se incrementara.
La aplicación explicara lo siguiente:
- Look and Feel
- Configurar de botones y labels
- Agregar componentes al contenedor
- Agregar bordes a los componentes
- Manejar los eventos.
3.1. Look and Feel
- Las pantallas muestran el look & feel posibles en la aplicación.
- Swing te permite indicar que apariencia (look and feel o LAF) se usara al mostrar la aplicación con la clase UIManager (administrador de la interfase de usuario).
- El código muestra como se define el look and feel por propio del Java (javax.swing.plaf.metal.MetalLookAndFeel)
Metal
Clase LAF usada : javax.swing.plaf.metal.MetalLookAndFeel
System
Motif
G
TK+
public class SwingMain {
//Indicar que look and feel se usara en la aplicacion.
//Los valores de LOOKANDFEEL seran:
// null (por defecto), "Metal", "System", "Motif" y "GTK+"
final static String LOOKANDFEEL = "Metal";
private static void initLookAndFeel() {
// Clase java que administrara el LAF.
String claseLAF = null;
if (LOOKANDFEEL.equals("Metal")) {
// retorna la clase del LAF propio del Java
claseLAF = UIManager.getCrossPlatformLookAndFeelClassName();
}
// UIManager es el administrador LAF
// el metodo configura el LAF de la aplicación
UIManager.setLookAndFeel(lookAndFeel);
}
}
3.2. Configurar botones y labels
- La mayoría de aplicaciones GUI presentan botones y labels (etiquetas)
- Este es el código que crea un label y un botón
- Adicionalmente se define una tecla rapida para el botón como ALT+S, con el fin de presionar el botón mediante el teclado
- También se agrega un manejador de eventos que se invocara cada vez que se presione el botón.
- El método setLabelFor indica a que componente (boton) etiqueta el label.
public class SwingContent {
private JButton boton;
private JLabel label;
public Component crearComponentes() {
//Creando los componentes de la ventana
label = new JLabel("Soy un label Swing!");
boton = new JButton("Soy un boton Swing!");
//Se agrega una tecla rapida ALT+S
boton.setMnemonic(KeyEvent.VK_S);
//Se agrega un manejador de eventos
SwingListener listener = new SwingListener();
boton.addActionListener(listener);
//Opcionalmente se enlaza el label al boton
label.setLabelFor(boton);
}
}
3.3. Agregar componentes al contenedor
- La aplicación crea un contenedor JPanel agrupando el label y el boton.
- Con el siguiente código se define el contenedor.
- Primero se crea el contenedor y se le asigna un layout manager (administrador de distribución de componentes)
- El layout manager determina el tamaño y posición de los componentes del contenedor.
- El código new GridLayout(0,1) fuerza a que los componentes se encuentren en una sola columna y con el mismo tamaño.
- Se agrega luego el label y el botón al panel
public class SwingContent {
public Component crearComponentes() {
//Se crea un layout para los componentes
LayoutManager layout = new GridLayout(0, 1);
JPanel panel = new JPanel(layout);
//Se agrega los componentes al panel.
panel.add(boton);
panel.add(label);
}
}
3.4. Agregar bordes a los componentes
- Si observa la ventana de la aplicación notara que existe un espacio vacio en el panel en sus 4 lados.
- Este código crea un espacio vacio alrededor de los componentes del contenedor.
- 30 pixeles hacia arriba, derecha e izquierda y 10 pixeles hacia abajo.
- El borde es un atributo que JPanel hereda de JComponent.
- El borde no es un componente, sino sirve para espaciar componentes.
public class SwingContent {
public Component crearComponentes() {
//Se agrega un borde vacio alrededor de los componentes.
panel.setBorder(BorderFactory.createEmptyBorder(
30, //arriba
30, //izquierda
10, //abajo
30) //derecha
);
return panel;
}
}
3.5. Manejar los eventos.
- Cada vez se tipea una tecla, se presiona el mouse; ocurre un evento.
- Cualquier objeto puede ser notificado por este evento.
- Los objetos con comportamiento, deben implementar manejador de eventos.
- En el ejemplo se ha declarado una clase interna para que maneje los eventos del botón.
public class SwingContent {
private int numClicks = 0;
private JLabel label;
public Component crearComponentes() {
//Se agrega un manejador de eventos
SwingListener listener = new SwingListener();
boton.addActionListener(listener);
}
//Clase interna que es un listener de eventos.
public class SwingListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText("Cantidad de clicks : " + numClicks);
}
}
}
- Cada manejador de eventos requiere de 3 piezas de código.
3.5.1. Donde se manejaran los eventos?
Una clase que implementara el listener de eventos.
public class SwingListener implements ActionListener...
3.5.2. Que componentes tendran eventos?
Una declaracion que registra el listener como manejador de eventos de un componente.
SwingListener listener = new SwingListener();
boton.addActionListener(listener);
3.5.3. Que se realizara ante un evento?
Un método manejador de eventos que implementa la interfase del listener.
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText("Cantidad de clicks : " + numClicks);
}
- En general cuando el usuario presiona un boton en pantalla (o realiza su equivalente en teclado) el programa debe contar con un objeto que implemente la interfase ActionListener
- El programa debe registrar este objeto en la fuente del evento (el boton)
- Cuando el usuario presiona el boton, se realiza el evento, invocandose el método actionPerformed del ActionListener registrado.
3.6. LABORATORIO
- Pruebe el siguiente programa.
- Pruebe cada uno de los LOOKANDFEEL del programa. Que clase usan?
- Agregue un segundo boton (boton2) y un segundo label (label2) al programa pero cuyo contador (numClicks2) inicie en 1000 y se decremente con cada clic al boton2.
- Modifique el layout del contenedor:
LayoutManager layout = new GridLayout(0, 2);
LayoutManager layout = new FlowLayout();
SwingMain.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingMain {
//Indicar que look and feel se usara en la aplicacion.
//Los valores de LOOKANDFEEL seran:
// null (por defecto), "Metal", "System", "Motif" y "GTK+"
final static String LOOKANDFEEL = "Metal";
public static void main(String[] args) {
//Enviar una tarea al administrador de eventos
//para que cree y muestre la ventana
SwingUtilities.invokeLater
( new Runnable() {
public void run() { crearMostrarVentana(); }
}
);
}
// Metodo para crear una ventana GUI.
private static void crearMostrarVentana() {
//Configura el LAF.
iniciarLookAndFeel();
//Asegurarse que contenga los decorators de una ventana.
JFrame.setDefaultLookAndFeelDecorated(true);
//Crear y configurar la ventana
JFrame frame = new JFrame("SwingMain");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Agregar un panel que contiene un label y un boton
SwingContent contenido = new SwingContent();
Component panel = contenido.crearComponentes();
frame.getContentPane().add(panel);
//Mostrar la ventana
frame.pack();
frame.setVisible(true);
}
private static void iniciarLookAndFeel() {
// Clase java que administra el LAF.
String claseLAF = null;
if (LOOKANDFEEL != null) {
if (LOOKANDFEEL.equals("Metal")) {
// retorna la clase del LAF propio del Java
claseLAF = UIManager.getCrossPlatformLookAndFeelClassName();
} else if (LOOKANDFEEL.equals("System")) {
// retorna la clase del LAF de windows
claseLAF = UIManager.getSystemLookAndFeelClassName();
} else if (LOOKANDFEEL.equals("Motif")) {
claseLAF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
} else if (LOOKANDFEEL.equals("GTK+")) {
claseLAF = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
} else {
System.err.println("Ha indicado un LOOKANDFEEL incorrecto : "
+ LOOKANDFEEL);
claseLAF = UIManager.getCrossPlatformLookAndFeelClassName();
}
System.out.println("Clase LAF usada : "+claseLAF);
try {
// UIManager es el administrador LAF
// el metodo configura el LAF de la aplicacion
UIManager.setLookAndFeel(claseLAF);
} catch (ClassNotFoundException e) {
System.err.println("No se encontro la clase para el LAF:"
+ claseLAF);
System.err.println("Ha incluido la libreria en classpath?");
System.err.println("Se usara LAF por defecto.");
} catch (UnsupportedLookAndFeelException e) {
System.err.println("No se puede usar el LAF indicado ("
+ claseLAF
+ ") en esta plataforma.");
System.err.println("Se usara LAF por defecto.");
} catch (Exception e) {
System.err.println("Se tiene problemas al usar el LAF ("
+ claseLAF
+ ")");
System.err.println("Se usara LAF por defecto.");
e.printStackTrace();
}
}
}
}
SwingContent.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingContent {
//Contador de clicks en el boton.
private int numClicks = 0;
//Componentes de la aplicacion.
private JButton boton;
private JLabel label;
public Component crearComponentes() {
//Creando los componentes de la ventana
label = new JLabel("Soy un label Swing!");
boton = new JButton("Soy un boton Swing!");
//Se agrega una tecla rapida ALT+S
boton.setMnemonic(KeyEvent.VK_S);
//Se agrega un manejador de eventos
BotonListener listener = new BotonListener();
boton.addActionListener(listener);
//Opcionalmente se enlaza el label al boton
label.setLabelFor(boton);
//Se crea un layout para los componentes
LayoutManager layout = new GridLayout(0, 1);
JPanel panel = new JPanel(layout);
//Se agrega los componentes al panel.
panel.add(boton);
panel.add(label);
//Se agrega un borde vacio alrededor de los componentes.
panel.setBorder(BorderFactory.createEmptyBorder(
30, //arriba
30, //izquierda
10, //abajo
30) //derecha
);
return panel;
}
//Clase interna que es un listener de eventos.
public class BotonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText("Cantidad de clicks : " + numClicks);
}
}
}
Gamel Digital: Java - 10 Curso de Java OO. Swing I
