Aprendiendo lo basico de JSlider y JProgressBar

Aprendiendo un uso Básico del JSlider.

A toda persona que se inserte por primera vez en el mundo de la GUI de java, se le es complicado ejecutar cómodamente el uso de los componentes de la “swing”, y uno como esta pasando pasó por problemas similares, y como siempre es bueno ayudar a quien lo necesita presentaremos a continuación un muy simple tutorial sobre dos componentes del “SWING” en java, tomando en cuenta que quien este leyendo tiene conocimientos previos en programar en java, nos centraremos solamente en los componentes JSlider y JPRogressBar.

Nuestra primera labor en este tutorial será llegar a esta interfaz:




Primero construyamos una clase que llamaremos “JSlider”, e importamos todas las clases que usaremos:

_ javax.swing.*

_javax.swing.event.*

_java.awt.*

_java.awt.event.*

Nota: también importaremos la clase JSlider y JFrame aunque estas vengan en javax.swing.* y javax.swing.* respectivamente, por si a alguien le causa problemas (como a nosotros). Todo esto debiera quedar así:

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.JSlider;

import javax.swing.JFrame;

public class Slider{

public static void main(String[] args) {

//código

}

Ahora en la sección de “//código” se realizara todo lo que tenga que ver con nuestro JSlider, y los detalles para poder verlos en una ventana como en la imagen anterior.

Crearemos rápidamente un JFrame, un Jpanel para poder pegar y visualizar nuestro JSlider (Como se dijo antes, solo explicaremos lo que tenga q ver con el JSlider).


//código:

JFrame ventana = new JFrame("COme On!!");

ventana.setSize(400, 400);

JPanel panel = new JPanel();

//Crearemos nuestro JSlider a continuación, cada línea con una breve descripción, luego se explicara con más //detalles

slider = new JSlider(JSlider.VERTICAL, 0, 100, 25); /*(posición vertical, comienza, termina, donde comienza al iniciar programa)*/

slider.setInverted(false); //se invierte el relleno del JSlider (desde donde comienza)

slider.setPaintTicks(true); //las rayitas que marcan los números

slider.setMajorTickSpacing(25); // de cuanto en cuanto los números en el slider

slider.setMinorTickSpacing(5); //las rayitas de cuanto en cuanto

slider.setPaintLabels(true); //si se ve los números del slider

slider.addChangeListener(new MiAccion()); //Agrega un escuchador al slider creado, lo cual se usara luego

/*Ahora, aunque no pertenece a la clase JSlider, crearemos un JLabel en el cuál se mostrara el numero en el cual se encuentre el slider en ese momento*/

label = new JLabel("LEts Go!!°"); /*Crea un JLabel el cual muestra el numero en el que esta el JSlider y de inicia con la frase LEts Go!!° */

Explicaremos un poco más detallado el constructor presente y cada método (el método se encontrara en cursiva):

Constructor:

slider = new JSlider(JSlider.VERTICAL, 0, 100, 25): Se inicializa el objeto del JSlider con nombre slider con los siguientes parámetro: _JSlider.VERTICAL, este parámetro especifica la forma del nuestro slider si se crea en forma Vertical u Horizontal (JSlider.HORIZONTAL).

*0, el segundo parámetro indica el tamaño mínimo de el JSlider.

*100, el tercer parámetro indica el tamaño máximo de el JSlider.

*25, el cuarto parámetro indica la posición en la cual se inicia el JSlider.

Métodos:

_ slider.setPaintLabels(true): Muestra una etiqueta con números designados en el método setMajorTickSpacing(25) el cual el numero 25 indica mostrar numero de 25 en 25 partiendo del minimo establecido en el JSlider.

_ slider.setInverted(false) : Recibe una variable Booleana (true o false), dependiendo cual sea su parámetro el JSlider tendrá su mínimo en un lado o el otro.

­_ slider.setPaintTicks(true): Este método muestra Ticks (líneas) que delimitan se según los métodos setMajorTickSpacing() y setMinorTickSpacing().

_ slider.setMinorTickSpacing(5): Este método muestra Ticks (líneas), los cuales equivalen a avanzar de 5 en 5 en este caso (se necesita método setPaintTicks() con parámetro true).

_ slider.setMajorTickSpacing(25): Muestra Ticks mayores, con un numero al lado, de 25 en 25, en este caso, partiendo del valor mínimo dado al JSlider (si el método setPaintTicks() esta con parámetro false, solo se mostraran el numero correspondiente).

Luego de haber explicado los métodos usados en nuestro JSlider (no son los únicos métodos existentes a todo esto), continuaremos con el fin del programa que consiste en: Luego de haber creado nuestro JSlider, y nuestro JLabel, lo siguiente será agregar estos elementos al JPanel creado anteriormente, para luego agregar el JPanel a la ventana (JFrame), para poder visualizar nuestra creación.

Y esto se realiza con el siguiente código:

panel.add(label); // add sirve para agregar nuestro label al panel creado

panel.add(slider); /*Ahora ya están agregados tanto el label como nuestro slider al panel*/

Entonces, que es lo que seguía luego de haber agregado lo anterior?? Sabes?? Bueno, si no te acuerdas es agregar nuestro panel (JPanel) a la ventana (JFrame), puesto que gracias a está podemos ver nuestro JSlider en acción, y también otros métodos pero para la ventana (JFrame), lo cuál no se explicara ya saben el porque, y nuevamente, esto se realiza Con el siguiente código:

ventana.add(panel); //Agrega panel a la ventana(JFrame).

ventana.setVisible(true); //Hace que la ventana sea “visible a nuestros ojos”.

ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*Al presionar la X de la ventana el programa terminara (al cerrar la ventana).*/

Luego de haber generado el código para el JSlider, se procederá a crear el método, el cuál logra hacer q nuestra label se valla actualizando y lanzando el numero en la cuál se valla posicionando nuestro JSlider.

public static class MiAccion implements ChangeListener{ /*aquí se empieza a crear el método. */

public void stateChanged(ChangeEvent e){

int evaluo = slider.getValue(); /*toma el valor que tiene el slider y lo guarda como entero */

String nose = Integer.toString(evaluo); /*En nose guarda nuestro entero evaluo como un string */

label.setText(nose); /*actualiza nuestro label al valor en el que se encuentra nuestro JSlider */

}

}

Luego de haber visto por partes nuestro código vamos a ajustar nuestros últimos detalles en el código completo.

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.JSlider;

import javax.swing.JFrame;

public class Slider{

static JSlider slider; /*se deben instanciar antes para poder usarlos en el método creado mas abajo */

static JLabel label; /*y a la vez estaticos (static) también para poder ser usados en nuestro método creado. */

public static void main(String[] args){

JFrame ventana = new JFrame("COme On!!");

ventana.setSize(400, 400);

JPanel panel = new JPanel();

slider = new JSlider(JSlider.VERTICAL, 0, 100, 25);

slider.setInverted(false);

slider.setPaintTicks(true); slider.setMajorTickSpacing(25); slider.setMinorTickSpacing(5); slider.setPaintLabels(true);

slider.addChangeListener(new MiAccion());

label = new JLabel("LEts Go!!°");

panel.add(label);

panel.add(slider);

ventana.add(panel);

ventana.setVisible(true);

ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static class MiAccion implements ChangeListener{

public void stateChanged(ChangeEvent e){

int evaluo = slider.getValue();

String nose = Integer.toString(evaluo);

label.setText(nose);

}

}

}

Luego de completo nuestro código, solo queda por parte de ustedes ejercitar, pueden ir cambiando las variables, y ahora les dejaremos la API del JSlider, donde podrán ver todos los métodos e ir implementando sus propias ideas.

LINK:

API JSlider: http://java.sun.com/javase/6/docs/api/javax/swing/JSlider.html

API general: http://java.sun.com/javase/6/docs/api/



JProgressBar……




Muchas personas parecen tener problemas para hacer frente a las barras de progreso, o el control JProgressBar swing, por lo que este tutorial te llevará a través del proceso de creación de una aplicación sencilla en la que un botón hará que el incremento de la barra de progreso progresivamente de 0 a 100 en cinco segundos. Esto le introducirá otra lección importante en Java: multithreading, que permite ejecutar múltiples tareas en su aplicación.

Creación de la clase principal

Vamos a nombrar a nuestros Ejemp1 clase principal . Esta es la clase con el método principal declaró:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Ejemp1{
public static void main (String[] args){
//codigo
}
}

Tenemos que declarar todos los componentes GUI. A partir de ahora, supongo que usted tiene algunos conceptos básicos sobre los componentes. Declaramos, por supuesto, un JFrame y un CONTAINER, y también necesitamos un botón y una barra de progreso.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Ejemp1{
//Declarar componentes GUI
static JFrame frmMain;
static Container pane;
static JButton btnDo;
static JProgressBar barDo;

public static void main (String[] args){
//codigo...
}
}

Vamos a crear una instancia de todos los componentes, añadirlos,a continuación, y también la posición de ellos.


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Ejemp1{
//Declarar componentes GUI
static JFrame frmMain;
static Container pane;
static JButton btnDo;
static JProgressBar barDo;

public static void main (String[] args){

try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (Exception e) {}

//Crear los componentes
frmMain = new JFrame("Progreso");
frmMain.setSize(300, 100); // Tamaño de la ventana 300x100 pixels
pane = frmMain.getContentPane();
pane.setLayout(null); //aplicar nulllayout
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btnDo = new JButton("Apreta!!!!!!");
barDo = new JProgressBar(0, 100); //Valor mínimo: 0 Valor máximo: 100

//Añadir componentes al panel
pane.add(btnDo);
pane.add(barDo);

//Controles de posición (X, Y, ancho, altura)
barDo.setBounds(10, 10, 280, 20);
btnDo.setBounds(100, 35, 100, 25);

//Marco visible
frmMain.setResizable(false);
frmMain.setVisible(true);

//addActionListener
btnDo.addActionListener(new btnDoAction());
}
}

El método voidactionPerformed el método actionPerformed de la clase btnDoAction será borrado.

La acción del botón

Como dijimos anteriormente el método actionPerformed fue eliminado del programa y lo dejamos de la siguiente manera:

public static class btnDoAction implements ActionListener{
public void actionPerformed (ActionEvent e){
//….
}
}

Inicio de un thread (multithreading)

Algunos pueden pensar multithreading en Java es difícil, pero se equivocaron, es muy fácil. Ahora que se ha de aprendido la addActionListener, tendrá que aplicar lo que sabe para el método de ejecución de un Runnable, que es un thread,sencillo!!!.

public static class thread1 implements Runnable{
public void run(){

}
}

Como habrá intuido ya que usted es una persona muy inteligente, el run () que esta vacío contendrá los diversos acontecimientos que ocurren una vez que este thread(o hilo) se comenzó a usar, su método start (). Para iniciar este Thread, tendremos que utilizar:


new Thread(new thread1()).start();

En el thread, vamos a poner el código para incrementar la barra de progreso

for (int i=0; i<=100; i++){ barDo.setValue(i); barDo.repaint(); try{Thread.sleep(50);} catch (InterruptedException err){} }

El barDo.setValue (i) la línea cambia el valor de ProgressBar i, que es la variable de incremento, de modo que se incrementa la barra.

El repaint () método actualiza los gráficos de la barra, esto es algo importante a considerar como actualizar algunos de los componentes gráficos.

El try ... catch cosas es también parte de los fundamentos.

Usamos Thread.sleep (50) para hacer el sueño de hilo 50 milésimas de segundo, o 1 / 20 de segundo.

Tenemos que controlar el error InterruptedException que pueden ser lanzados por esta instrucción.

Poniendotodojunto:


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Ejemp1{
//Declarar componentes GUI

static JFrame frmMain;
static Container pane;
static JButton btnDo;
static JProgressBar barDo;

public static void main (String[] args){

try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (Exception e) {}

//Creartodos los componentes
frmMain = new JFrame("Barra de progreso");
frmMain.setSize(300, 100);

pane = frmMain.getContentPane();
pane.setLayout(null);
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btnDo = new JButton("TOUCH ME!!");
barDo = new JProgressBar(0, 100);
pane.add(btnDo);
pane.add(barDo);


barDo.setBounds(10, 10, 280, 20);
btnDo.setBounds(100, 35, 100, 25);


frmMain.setResizable(false);
frmMain.setVisible(true);


btnDo.addActionListener(new btnDoAction());
}


public static class btnDoAction implements ActionListener{
public void actionPerformed (ActionEvent e){
new Thread(new thread1()).start();
}
}


public static class thread1 implements Runnable{
public void run(){
for (int i=0; i<=100; i++){ barDo.setValue(i); barDo.repaint(); try{Thread.sleep(50);} catch (InterruptedException err){} } } } }

Bueno, para finalizar les dejaremos un código bien fome con la una unión, del JSlider y el JProgressBar, el cual hace que al deslizar el JSlider, a la vez, se aumente o disminuya el JProgressBar:

import java.awt.Container;

import java.awt.GridLayout;

import javax.swing.JApplet;

import javax.swing.JFrame;

import javax.swing.JProgressBar;

import javax.swing.JSlider;

import javax.swing.border.TitledBorder;

public class Progress extends JApplet {

private JProgressBar progressbar = new JProgressBar();

private JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 60);

public void init() {

Container cp = getContentPane();

cp.setLayout(new GridLayout(2, 1)); //GridLayout(fila, columnas)

cp.add(progressbar);

slider.setValue(0);

slider.setPaintTicks(true);

slider.setMajorTickSpacing(20);

slider.setMinorTickSpacing(5);

slider.setBorder(new TitledBorder("Correme..."));

progressbar.setModel(slider.getModel());

cp.add(slider);

}

public static void main(String[] args) {

run(new Progress(), 300, 200);

}

public static void run(JApplet applet, int width, int height) {

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(applet);

frame.setSize(width, height);

applet.init();

applet.start();

frame.setVisible(true);

}

}

Se le agradece por su comprensión a todos los lectores, y a quienes logren entender este tutorial CONGRATULATION, y disculpen los que no, siendo este nuestro primer tutorial y único, se les agradece la comprensión.

BYE BYE….

By

Nicolas Araneda and Pablo Lara.



Tutorial de JButton y JColorChooser



Introducción:

Cada vez que el usuario escribe un carácter, oprime un botón del mouse, hace un movimiento con el cursor del mouse, etc. Ocurre un “evento”.

El objeto que recibe este evento (un botón, área de texto, panel, lista, entre otros), es notificado de que recibió el evento.

Todo lo que se debe hacer es implementar la interfaz apropiada (“event handler”) y registrarla como un escucha (“event listener”) en el componente GUI (“event source” u objeto que va a recibir el evento) apropiado.

En este tutorial podrás aprender las funcionalidades de las clases pre construidas JButton y JcolorChooser, veremos que son, como usarlas, y ejemplos de ellas.

Antes de ver nuestras clases hablaremos de los escuchadores y de los eventos para poder comprender mejor nuestros programas.

Los eventos están agrupados en los siguientes conjuntos:

ActionListener: acciones sobre componentes.

WindowListener: cierre o manipulación de una ventana (Frame/Dialog).

MouseListener: presión de un botón del mouse mientras el cursor está sobre el componente.

MouseMotionListener: movimiento del cursor sobre un componente.

ComponentListener: visibilidad del componentes.

FocusListener: obtención del foco del teclado.

ListSelectionListener: selección de ítems dentro de una lista.

Cuando un usuario hace click o presiona la tecla Return mientras digitaba en un textfield o escoje una opción de un menú, se genera un evento, que tiene los siguientes elementos:

La fuente del evento (event source): Es el componente que origina el evento.

El escuchador: (event listener) es el encargado de atrapar o escuchar el evento.

El manejador del evento (event handler), es el método que permite implementar la interfaz, es decir el escuchador. Este método:

-Recibe un objeto evento (ActionEvent) el cual tiene información sobre el evento que sucedió.

-Descifra el evento, con dicho objeto.

-Procesa lo solicitado por el usuario.

En la clase que maneja el evento (event handler) se deben implementar los métodos de la interface ABCListener que descifren el evento (ABCEvent) y lo procesen.

public void actionPerformed(ActionEvent e) {

//Código que reaccione a la acción

}

ActionListener:

La interface ActionListener presenta el método:

void actionPerformed(ActionEvent eve)

que tiene como parámetro el evento generado, que es un instancia de la clase ActionEvent.

La clase ActionEvent presenta además 2 métodos útiles:

String getActionCommand()

int getModifiers()

Que permiten saber qué teclas se estaban presionando cuando se produjoi el evento (Shift, Ctrl, Ald, etc)


JButton:

Esta clase hereda de la clase AbstractButton, por lo tanto la clase JButton posee una serie de

funcionalidades que son comunes a todas las clases que heredan de la clase AbstractButton.

Un botón puede contener texto o imágenes o ambos elementos. El texto que contiene un botón se

puede alinear con respecto a la imagen, también se pueden especificar teclas de teclado alternativas, que se indicarán mediante el subrayado de la letra del texto correspondiente.

Cuando un botón se encuentra deshabilitado el Look and Feel correspondiente genera de forma

automática el aspecto del botón. Sin embargo, se puede indicar una imagen para que se muestre

cuando el botón se encuentre deshabilitado.



javax.swing
Clase JButton

 java.lang.Object
      java.awt.Component
            java.awt.Container
               javax.swing.JComponent
                  javax.swing.AbstractButton
                       javax.swing.JButton

- Para crear un objeto de tipo Jbutton se puede proceder de la siguiente manera:

Constructor y descripción

JButton ()
Crea un botón con ningún conjunto de texto o icono.

JButton ( Action a)
Crea un botón donde las propiedades se toman de la
Action suministrada.

JButton ( Icon icon)
Crea un botón con un icono.

JButton ( String text)
Crea un botón con el texto.

JButton ( String text, Icon icon)
Crea un botón con el texto inicial y un icono.


Un ejemplo básico de saber como funciona Jbutton es crear una ventana que contenga dos botones:

import javax.swing.*;

import java.awt.*;

public class Jbutton{

public static void main(String[] args){

JFrame ventana = new JFrame("Mi Ventana");

ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ventana.setBounds(100,150,200,100);

ventana.setLayout(new FlowLayout());

JButton boton1 = new JButton("Boton 1");

JButton boton2 = new JButton("Boton 2");


ventana.add(boton1);

ventana.add(boton2);

ventana.setVisible(true);

}

}

Aspecto que debe tener el código:


Un ejemplo mas avanzado de la aplicación de jbutton consiste en mostrar tres botones con imágenes y ayudas (tooltips), la pulsación de dos de los 3 botones activara o desactivara el boton central.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Botones extends JFrame implements ActionListener{

private JButton botonIzq;

private JButton botonDer;

private JButton botonCentro;

private ImageIcon iconoIzq=new ImageIcon("icono3.gif");

private ImageIcon iconoDer=new ImageIcon("icono1.gif");

private ImageIcon iconoCentro=new ImageIcon("icono2.gif");

public Botones (){

super("Ventana con botones");

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

public void creaBotones(){

//se instancia el botón indicando la imagen

botonIzq=new JButton("Desactiva botón central",iconoIzq);

//se da formato al texto

botonIzq.setVerticalTextPosition(AbstractButton.CENTER);

botonIzq.setHorizontalTextPosition(AbstractButton.LEFT);

//se indica la tecla asociada al botón

botonIzq.setMnemonic(KeyEvent.VK_D);

//se indica el comando de acción que se utiliza cuando se pulsa el botón

botonIzq.setActionCommand("desactiva");

//se asigna un tooltip

botonIzq.setToolTipText("Desactivo el botón central");

botonIzq.setEnabled(false);

botonDer=new JButton("Activa botón central",iconoDer);

botonDer.setVerticalTextPosition(AbstractButton.CENTER);

botonDer.setHorizontalTextPosition(AbstractButton.RIGHT);

botonDer.setMnemonic(KeyEvent.VK_A);

botonDer.setActionCommand("activa");

botonDer.setToolTipText("Activo el botón central");

botonCentro=new JButton("Botón central",iconoCentro);

botonCentro.setEnabled(false);

botonCentro.setToolTipText("No hago nada");

//se registran los oyentes, que son la misma clase.

botonIzq.addActionListener(this);

botonDer.addActionListener(this);

}

public void añadeBotones(){

//creamos un panel para añadir los botones

JPanel panelContenido=new JPanel();

panelContenido.add(botonIzq);

panelContenido.add(botonCentro);

panelContenido.add(botonDer);

//establecemos este panel como panel de contenido de la ventana

setContentPane(panelContenido);

}

public void actionPerformed(ActionEvent evento){

if (evento.getActionCommand().equals("desactiva")){

//se desactiva el botón central y se actualiza

//el estado de los otros botones

botonCentro.setEnabled(false);

botonIzq.setEnabled(false);

botonDer.setEnabled(true);

}else{

//se activa el botón central

botonCentro.setEnabled(true);

botonIzq.setEnabled(true);

botonDer.setEnabled(false);

}

}

public static void main(String s[]) {

Botones ventana = new Botones();

ventana.creaBotones();

ventana.añadeBotones();

ventana.pack();

ventana.setVisible(true);

}

}

Se puede comprobar si pulsamos las teclas Alt+D o Alt+A tienen el mismo efecto que pulsar el botóncorrespondiente, además esta combinación de teclas aparece descrita en el tooltip.

Podemos indicar el botón activo por defecto de un contenedor de alto nivel mediante el método

setDefaultButton() de la clase JRootPane. El botón activo por defecto aparece destacado del resto y si el usuario pulsa la tecla Enter es equivalente a pulsar este botón. Podemos modificar el ejemplo

anterior para que el botón activo por defecto sea el botón de la derecha.

Aspecto que debe tener el codigo:




JColorChooser:

Es un panel de controles que permite al usuario seleccionar un color.

Es sencillo de usar lo único que debemos hacer es llamarlo con el método showDialog, y después pasar a este método un objeto padre, un titulo y un color predeterminado.

Este método devuelve el color seleccionado por el usuario como un objeto color (o el color predeterminado si el usuario no selecciono ningún otro).


Veamos un ejemplo para su mayor claridad.

(Observa y lee los comentarios para que tengas una mayor claridad).

Ejemplo 1:

//primero importamos los paquetes de java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.event.*;

//creamos la clase que extiende de JFrame (esta clase no es un applet)

public classEjemploJColorChooserextendsJFrameimplementsChangeListener,ActionListener{

//inicializamos objetos.

JColorChooser jcc;

JButton jb;

//creamos el metodo public EjemploJColorChooser

public EjemploJColorChooser(){

// operación de cierre por defecto

setDefaultCloseOperation(EXIT_ON_CLOSE);

//al objeto “jcc” creado anteriormente le asignamos un JColorChooser

jcc = new JColorChooser();

//al objeto “jb” creado anteriormente le asignamos un JButton

jb = new JButton("Pulsa aquí para cerrar");

//obtenemos la seleccion

jcc.getSelectionModel().addChangeListener(this);

//agregamos un listado de acciones a jb

jb.addActionListener(this);

//damos las dimenciones al panel jcc

jcc.setMaximumSize(new Dimension(100,100));

//

setLayout(new BorderLayout());

add(jcc, BorderLayout.CENTER);

add(jb, BorderLayout.SOUTH);

pack();

}

public void stateChanged(ChangeEvent e){

//fijamos el color de primer plano

jb.setForeground(jcc.getColor());

}

public void actionPerformed(ActionEvent e){

JOptionPane.showMessageDialog(this, "Chao!");

System.exit(0);

}

public static void main(String[] args){

new EjemploJColorChooser().setVisible(true);

}

}

Al ejecutarlo se nos abre el selector de color como se muestra a aquí.



Observa que en este programa puedes seleccionar un color pero no puedes hacer nada más que eso únicamente tiene un botón de cierre.


Ejemplo 2:

//Primero importaremos los paquetes de java.

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

/* la clase la llamaremos ColorChooser es un applet y implementara ActionListener para registrar una accion con el botón que crearemos y para añadir comandos de acción a objetos JButton con setActionCommand.*/

public class ColorChooserextendsJAppletimplementsActionListener{

//Creamos un panel

JPanel jpanel = new JPanel();

//declaramos un objeto JButton

JButton jbutton;

//creamos el método init de tipo void para iniciar el applet

public void init(){

//asignamos al objeto jbutton un botón con el texto especificado

jbutton = new JButton("Haga clic aquí para cambiar los colores.");

//le asignamos a nuestro botón una acción

jbutton.addActionListener(this);

//agregamos a nuestro panel el botón ya creado

jpanel.add(jbutton);

//Obtiene el objeto contenido en el panel para este applet

getContentPane().add(jpanel);

}

//creamos el método actionPerformed en el que implementamos un efecto lateral

public void actionPerformed(ActionEvent e){

//Creamos nuestro selector de colores con esta sencilla instrucción

Color color = JColorChooser.showDialog(ColorChooser.this,"Seleccione un nuevo color...", Color.white);

//asignamos el color seleccionado al fondo de la ventana.

jpanel.setBackground(color);

}

}

Si implementamos este pequeño código y ejecutamos nuestro applet observaremos lo que veremos.

Primero veremos nuestro panel con el botón que creamos.



Si hacemos clic en el botón veremos el panel de colores.




Observemos también que en el panel hay un sector donde dice “Recientes” y veremos los últimos colores que hemos seleccionado recordados hay.



Y por ultimo si le damos a aceptar veremos cómo nuestro fondo cambia de color al que hemos elegido.



Conclusión:

Cada vez que el usuario realiza una acción se crean eventos los que son escuchados y respondidos en tiempo real de ejecución.

Toda acción del usuario tiene una debida respuesta.

Ahora ya sabes cómo hacer botones y selectores de color.


Integrantes: Mauricio Oyarzún

Marión Taladriz