SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
1
1. JAVA FOUNDATION CLASSES (JFC)
JFC es la abreviatura de Java Foundation Classes, que comprende un
grupo de características para ayudar a construir interfaces gráficos de
usuario (GUIs). Se creo como una extensión de AWT. Comprende las
siguientes características:
 Componentes Swing.
 API de accesibilidad.
 Java 2D API
 Soporte de Drag and Drop.
OBJETIVOS
 Conocer y usar objetos básicos de programación con Swing.
 Conocer la nueva tecnología para la creación de interfaces gráficas.
 Comprender y utilizar las clases JFrame, JPanel y JButton.
2
Jerarquía de clases de Swing
2. La clase JComponent
Extiende de Container, la lcual a su vez hereda de la clase Component;
todas estas del paquete java.awt. Incluye eventos de y tiene soporte
para agregar o quitar componentes al contenedor.
3. Clase JFrame:
La clase JFrame implementa un objeto ventana, JFrame es una
extensión de la clase Frame del paquete AWT. Para crear una ventana,
existen dos formas principales de hacerlo:
 Crear un objeto de la clase JFrame
 Extender la clase JFrame
El último método es muy útil cuando se crean ventanas personalizadas
que se invocan repetidamente (como ventanas de error, o de
información).
 Crearemos una ventana con el primer método:
ventana = new JFrame();
 Una vez creado una ventana JFrame, ésta obtiene el tamaño
necesario para mostrar los componentes que existen dentro de la
aplicación, como en nuestro ejemplo no existe componente,
Object
Graphics
Component
TextComponent Container
TextField TextArea Window Panel ScrollPane
Frame Dialog
FileDialog
Canvas
Button
Choice
Checkbox
List
Scrollbar
Java.applet
Applet
3
cambiaremos su tamaño inicial, con el método: setSize(int ancho,
int largo)
ventana.setSize(200,300);
 Después cambiaremos su título para que sea el nombre de
nuestra aplicación con el método: setTitle(String titulo)
ventana.setTitle("Hola mundo Swing");
 El objeto existe, pero no es mostrado por defecto, entonces se
hace la llamada a: setVisible(boolean)
ventana.setVisible(true);
C
ó
d
i
g
o
:
S
e
d
e
b
e
n
o
t
a
r
q
u
e
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Window extends JFrame
{
public Window()
{
this.setSize(400,500);
this.setTitle("Primer Aplicacion Swing");
this.setVisible(true);
}
public static void main(String []args)
{
new Window();
JFrame jFrameWindow = new JFrame();
jFrameWindow.setSize(400,500);
jFrameWindow.setTitle("Segunda Aplicacion Swing");
jFrameWindow.setVisible(true);
}
}
4
Eventos para cerrar la ventana
JPanel
JButton
JFrame
JLabel
JFrame
JPanel
JButton JLabel
containers
5
Se puede especificar un comportamiento por defecto al cerrar la ventana
utilizando el método setDefaultCloseOperation. Y colocar los siguientes
valores:
 DO_NOTHING_ON_CLOSE: No hará nada cuando el usuario le
de clic en el botón cerrar de la ventana.
 HIDE_ON_CLOSE (por defecto): Ocultará la ventana y lo
removerá de la pantalla de usuario.
 DISPOSE_ON_CLOSE: Oculta y destruye la ventana cuando el
usuario la cierra.
 EXIT_ON_CLOSE: Termina la ejecución de la aplicación. Es
como si usáramos la sentencia System.exit(0).
6
ACTIVIDAD
1. Cree un JFrame con dos botones de comando.
Código:
class MiPrimerJFrame extends JFrame{
public MiPrimerJFrame(String nombre, int x, int y){
super(nombre);
Icon icon= new ImageIcon("images/DUKE.GIF","Un Gif
Animado de Duke en Swing");
JLabel label = new JLabel("Swing!",icon,JLabel.CENTER);
add(label,BorderLayout.CENTER);
this.setSize(x,y);
}
public static void main(String[] arg){
// --- Creando componentes
MiPrimerJFrame jf=new MiPrimerJFrame("Mi Primer
JFrame",200,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
7
2. Cree un formulario con una imagen centrada.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JFrame03 extends JFrame{
int nveces=1;
JLabel label = new JLabel();
public JFrame03(String nombre, int x, int y){
super(nombre);
JButton button = new JButton("boton ",new
ImageIcon("images/duke.gif"));
button.setMnemonic('b'); // Alt+B o Alt+b
button.setFont(new Font("Comic sans", Font.PLAIN, 18));
setLayout(new FlowLayout());
add(button);
add(label);
setSize(x,y);
button.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
label.setText(event.getActionCommand()+" fue activado "+nveces+" veces");
nveces++;}
});
}
public static void main(String[] arg){
JFrame03 jf=new JFrame03("JFrame con eventos",300,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
8
3. Cree un JFrame que muestre un botón el cual al pulsarlo indique
cuantas veces.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JFrame03 extends JFrame{
int nveces=1;
JLabel label = new JLabel();
public JFrame03(String nombre, int x, int y){
super(nombre);
JButton button = new JButton("boton ",new
ImageIcon("images/duke.gif"));
button.setMnemonic('b'); // Alt+B o Alt+b
button.setFont(new Font("Comic sans", Font.PLAIN, 18));
setLayout(new FlowLayout());
add(button);
add(label);
setSize(x,y);
button.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
label.setText(event.getActionCommand()+" fue
activado "+nveces+" veces");
nveces++;
}
});
}
public static void main(String[] arg){
JFrame03 jf=new JFrame03("JFrame con eventos",300,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
9
4. Cree un Frame que muestre los dos tipos de botones:
import java.awt.*;
import javax.swing.*;
class JFrame04 extends JFrame{
Button b1,b2,b3,b4;
JButton jb1,jb2,jb3;
public JFrame04(String nombre, int x, int y){
super(nombre);
setLayout(null);
//creando componentes AWT
Button b1 = new Button("boton AWT 1");
Button b2 = new Button("boton AWT 2");
Button b3 = new Button("boton AWT 3");
Button b4 = new Button("boton AWT 4");
//creando componentes Swing
JButton jb1 = new JButton("b Swing 1");
JButton jb2 = new JButton("b Swing 2");
JButton jb3 = new JButton("b Swing 3");
//definiendo coordenadas botones AWT
b1.setBounds(10,10,150,25);
b2.setBounds(10,65,150,25);
b3.setBounds(10,100,150,25);
b4.setBounds(10,130,150,25);
10
La clase JPanel
JPanel es un contenedor de propósito general para componentes de peso
ligero. Como todos los contenedores, utiliza un Controlador de
Distribución para posicionar y dimensionar sus componentes. Como todos
los componentes Swing, JPanel permite añadirle bordes y determinar si
utiliza el doble buffer para aumentar el rendimiento.
Los métodos básicos para trabajar con JPanel son:
//definiendo coordenadas botones Swing
jb1.setBounds(170,25,100,40);
jb2.setBounds(170,65,100,40);
jb3.setBounds(170,105,100,40);
//agregando botones awt
add(b1);
add(b2);
add(b3);
add(b4);
//agregando botones swing
add(jb1);
add(jb2);
add(jb3);
this.setSize(x,y);
}
public static void main(String[] arg){
// --- Creando componentes
JFrame04 jf=new JFrame04("Comparación de clases",500,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
11
Para crear un JPanel
Método Propósito
JPanel()
JPanel(boolean)
JPanel(LayoutManager)
JPanel(LayoutManager,
boolean)
Crea un panel. Cuando está presente, el
parámetro boolean determina la estrategia de
buffer del panel. Un valor true indica doble
buffer. El parámetro LayoutManager
proporciona el controlador de distribución para el
nuevo panel. Si no se especifica, el panel utiliza
FlowLayout para distribuir sus componentes.
Para manejar Componentes en un Contenedor
Método Propósito
void add(Component)
void add(Component,
int)
void add(Component,
Object)
void add(Component,
Object, int)
void add(String,
Component)
Añade el componente especificado al panel.
Cuando existe, el parámetro int es la posición o
índice del componente dentro del contenedor. El
parámetro Object depende del controlador de
distribución y normalmente proporciona
información sobre el posicionamiento y
restricciones de distribución cuando se añaden
componentes. El parámetro String proporciona
un nombre para el componente.
int
getComponentCount()
Obtiene el número de componentes en este
panel.
Component
getComponent(int)
Component
getComponentAt(int,
int)
Component
getComponentAt(Point)
Component[]
getComponents()
Obtiene el componente o componentes
especificados. Se pueden obtener basándose en
su índice, o en sus posiciones x,y.
void
remove(Component)
void remove(int)
void removeAll()
Elimina el componente o componentes
especificados.
Seleccionar/Obtener el Controlador de Distribución
Método Propósito
void Selecciona u obtiene el controlador de
12
setLayout(LayoutManager)
LayoutManager
getLayout()
distribución para este panel. El controlador de
distribución es el responsable de posicionar
los componentes dentro del panel de acuerdo
con alguna filosofía.
Tenemos la siguiente plantilla de JPanel que insertamos en el área cliente
de un JFrame. Normalmente en este JPanel ubicamos todos nuestros
componentes Swing, además, también podemos insertar en este JPanel
otros JPanels.
2. La clase JButton
JButton desciende de la clase AbstractButton que define un pequeño API
público adicional. La siguiente tabla muestra las subclases de
AbstractButton definidas en Swing que podemos utilizar:
Clase Sumario
JButton Un botón común
JCheckBox Un checkbox típico
JRadioButton Un botón de radio de un grupo.
JMenuItem Un ítem de un menú.
JToggleButton Implementa la funcionalidad heredada de JCheckBox y
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MiPanel extends JPanel // implements ActionListener, …
{
// Aquí declaramos los componentes globales
public MiPanel()
{
// Aquí añadimos controles al panel
// ...
// Adicionamos interface a los componentes
// ...
}
// --------------------------------------------------------------------Para eventos
// public void actionPerformed(ActionEvent e)
// {
// …
// }
}
13
JRadioButton.
JButton en su nueva versión Swing permite insertar sobre él gif animados
(como lo veremos en un ejercicio posterior).
Las siguientes tablas listan los métodos y constructores más utilizados de
AbstractButton y JButton.
Seleccionar u obtener el contenido de un botón
Método o Constructor Propósito
JButton(String, Icon)
JButton(String)
JButton(Icon)
JButton()
Crea un ejemplar de JButton, lo inicializa
para tener el texto/imagen especificado.
void setText(String)
String getText()
Selecciona u obtiene el texto mostrado en
el botón.
void setIcon(Icon)
Icon getIcon()
Selecciona u obtiene la imagen mostrada
por el botón, cuando no está
seleccionado o pulsado.
void setDisabledIcon(Icon)
Icon getDisabledIcon()
Selecciona u obtiene la imagen mostrada
por el botón cuando está desactivado. Si
no se especifica una imagen, el aspecto y
comportamiento crea una por defecto.
void setPressedIcon(Icon)
Icon getPressedIcon()
Selecciona u obtiene la imagen mostrada
por el botón, cuando está pulsado.
void setSelectedIcon(Icon)
Icon getSelectedIcon()
void
setDisabledSelectedIcon(Icon)
Icon
getDisabledSelectedIcon()
Selecciona u obtiene la imagen mostrada
por el botón cuando está seleccionado. Si
no se especifica una imagen de botón
desactivado seleccionado, el aspecto y
comportamiento crea una manipulando la
imagen de seleccionado.
setRolloverEnabled(boolean)
boolean getRolloverEnabled()
void setRolloverIcon(Icon)
Icon getRolloverIcon()
void
setRolloverSelectedIcon(Icon)
Icon
getRolloverSelectedIcon()
Utiliza setRolloverEnabled(true) y
setRolloverIcon(someIcon) para hacer
que el botón muestre el ícono
especificado cuando el cursor pasa sobre
él.
14
Ajuste fino de la apariencia del botón
Método o constructor Propósito
void
setHorizontalAlignment(int)
void setVerticalAlignment(int)
int getHorizontalAlignment()
int getVerticalAlignment()
Selecciona u obtiene dónde debe situarse
el contenido del botón. La clase
AbstractButton permite uno de los
siguientes valores para alineamiento
horizontal: LEFT, CENTER (por defecto),
y LEFT. Para alineamiento vertical: TOP,
CENTER (por defecto), y BOTTOM.
void
setHorizontalTextPosition(int)
void
setVerticalTextPosition(int)
int
getHorizontalTextPosition()
int getVerticalTextPosition()
Selecciona u obtiene dónde debería
situarse el texto del botón con respecto a
la imagen. La clase AbstractButton
permite uno de los siguientes valores para
alineamineto horizontal: LEFT, CENTER
(por defecto), y LEFT. Para alineamiento
vertical: TOP, CENTER (por defecto), y
BOTTOM.
void setMargin(Insets)
Insets getMargin()
Selecciona u obtiene el número de pixels
entre el borde del botón y sus contenidos.
void
setFocusPainted(boolean)
boolean isFocusPainted()
Selecciona u obtiene si el botón debería
parecer diferente si obtiene el foco.
void
setBorderPainted(boolean)
boolean isBorderPainted()
Selecciona u obtiene si el borde del botón
debería dibujarse.
Implementa la funcionalidad del botón
Método o Constructor Propósito
void setMnemonic(char)
char getMnemonic()
Selecciona la tecla alternativa para
pulsar el botón.
void setActionCommand(String)
String getActionCommand(void)
Selecciona u obtiene el nombre de la
acción realizada por el botón.
void
addActionListener(ActionListener)
ActionListener
removeActionListener()
Añade o elimina un objeto que
escucha eventos action disparados
por el botón.
void
addItemListener(ItemListener)
ItemListener removeItemListener()
Añade o elimina un objeto que
escucha eventos items disparados
por el botón.
void setSelected(boolean)
boolean isSelected()
Selecciona u obtiene si el botón está
seleccionado. Tiene sentido sólo en
15
botones que tienen un estado on/off,
como los checkbox.
El código para este programa está dado por 2 clases: Formulario y MiPanel.
El código de la clase Formulario fue dado en anteriores páginas, sin
embargo, el código de MiPanel es el siguiente:
Veamos :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MiPanel extends JPanel implements ActionListener
{
// -------------------------------------------------------Para variables globales
JButton bV= new JButton("Víctor ",
new ImageIcon(getClass().getResource("images/V.gif")));
JButton bB= new JButton("Balta ",
new ImageIcon(getClass().getResource("images/B.gif")));
// ----------------------------------------------------------------------------------
public MiPanel()
{
bV.setMnemonic('V'); // Alt+V o Alt+v
bV.setFont(new Font("Arial", Font.PLAIN, 18));
bV.addActionListener(this);
add(bV);
bB.setMnemonic('B'); // Alt+B o Alt+b
bB.setFont(new Font("Arial", Font.PLAIN, 18));
bB.addActionListener(this);
add(bB);
}
// --------------------------------------------------------------------------Para eventos
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(bV)) setBackground(Color.cyan);
if(e.getSource().equals(bB)) setBackground(Color.green);
}
}
16
n
JPanel: BorderLayout
c
JFrame
JPanel: FlowLayout
JButtonJButton
JTextArea
17
1. Concepto:
Los layout managers o manejadores de composición, en traducción
literal, ayudan a adaptar los diversos Componentes que se desean
incorporar a un Panel, es decir, especifican la apariencia que tendrán los
Componentes a la hora de colocarlos sobre un Contenedor. Java
dispone de varios, en la actual versión, tal como se muestra en la
imagen:
OBJETIVOS
 Comprender y utilizar los diferentes tipos de diseño en Swing.
 Crear diversos diseños de JFrame y distribución de objetos en el Frame.
18
a. FlowLayout
Es el más simple y el que se utiliza por defecto en todos los Paneles
si no se fuerza el uso de alguno de los otros. Los Componentes
añadidos a un Panel con FlowLayout se encadenan en forma de lista.
La cadena es horizontal, de izquierda a derecha, y se puede
seleccionar el espaciado entre cada Componente.
Código : Implemente la clase PanelFlowLayout
public class PanelFlowLayout extends JPanel {
JButton b1=new JButton("Boton 1");
JButton b2=new JButton("Boton 2");
JButton b3=new JButton("Boton 3");
JButton b4=new JButton("Boton 4");
JButton b5=new JButton("Boton 5");
JButton b6=new JButton("Boton 6");
JButton b7=new JButton("Boton 7");
JButton b8=new JButton("Boton 8");
JButton b9=new JButton("Boton 9");
public PanelFlowLayout() {
setLayout(new FlowLayout());
add(b1);
add(b2);
…….
19
Formulario FlowLayout
b. BorderLayout
La composición BorderLayout (de borde) proporciona un esquema más
complejo de colocación de los Componentes en un panel. La
composición utiliza cinco zonas para colocar los Componentes sobre
ellas: Norte, Sur, Este, Oeste y Centro. Es el layout o composición que
se utilizan por defecto Frame y Dialog. El Norte ocupa la parte superior
del panel, el Este ocupa el lado derecho, Sur la zona inferior y Oeste el
lado izquierdo.
public class FormularioFlowLayout extends JFrame{
static int wF=400,hF=300;
public FormularioFlowLayout(String s) {
super(s);
setContentPane(new PanelFlowLayout());
setLocation((getToolkit().getScreenSize().width -
wF)/2,(getToolkit().getScreenSize().height - hF)/2);
}
public static void main(String[] args) {
FormularioFlowLayout jf = new
FormularioFlowLayout("FlowLayout");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(wF,hF);
jf.setVisible(true);
}
}
20
Diseñe la clase que implemente el BorderLayout.
Cree el formulario que permita ver el layout asignado.
import java.awt.BorderLayout;
import javax.swing.*;
public class PanelBorderLayout extends JPanel {
JButton sur =new JButton("Sur");
JButton norte =new JButton("Norte");
JButton este =new JButton("Este");
JButton oeste =new JButton("Oeste");
JButton centro =new JButton("Centro");
public PanelBorderLayout() {
setLayout(new BorderLayout());
add(sur,BorderLayout.SOUTH);
add(norte,BorderLayout.NORTH);
add(este, BorderLayout.EAST);
add(oeste, BorderLayout.WEST);
add(centro, BorderLayout.CENTER);
}
}
public class FormularioBorderLayout extends JFrame{
static int wF=400,hF=300;
public FormularioBorderLayout(String s) {
super(s);
add(new PanelBorderLayout());
setLocation((getToolkit().getScreenSize().width -
wF)/2,(getToolkit().getScreenSize().height - hF)/2);
}
21
ACTIVIDAD
Implemente la clase GridLayout de tal forma que se mueste de la
siguiente manera:

Mais conteúdo relacionado

Mais procurados

Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
Ronald Cuello
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
jorpical
 

Mais procurados (19)

SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujo
 
4 manejo de_metodos
4 manejo de_metodos4 manejo de_metodos
4 manejo de_metodos
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Poo
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Manejo de Eventos en java
Manejo de Eventos en javaManejo de Eventos en java
Manejo de Eventos en java
 
Curso java desde cero nivel i - modulo v
Curso java desde cero   nivel i - modulo vCurso java desde cero   nivel i - modulo v
Curso java desde cero nivel i - modulo v
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
 
Objeto jtable manipulación de datos multidimensionales
Objeto jtable manipulación de datos multidimensionalesObjeto jtable manipulación de datos multidimensionales
Objeto jtable manipulación de datos multidimensionales
 
Herencia
HerenciaHerencia
Herencia
 
Resumen java
Resumen javaResumen java
Resumen java
 
Expo métodos
Expo métodosExpo métodos
Expo métodos
 
Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcaciones
 

Destaque

Tema 1 programación orientada a objetos por gio
Tema 1   programación orientada a objetos por gioTema 1   programación orientada a objetos por gio
Tema 1 programación orientada a objetos por gio
Robert Wolf
 
Cartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizadoCartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizado
Robert Wolf
 
Introduccion poo con_java
Introduccion poo con_javaIntroduccion poo con_java
Introduccion poo con_java
Robert Wolf
 
юид смолевичи (2)
юид смолевичи (2)юид смолевичи (2)
юид смолевичи (2)
Maksim Lepeshko
 

Destaque (20)

Strings
StringsStrings
Strings
 
Tema 1 programación orientada a objetos por gio
Tema 1   programación orientada a objetos por gioTema 1   programación orientada a objetos por gio
Tema 1 programación orientada a objetos por gio
 
Java
JavaJava
Java
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Cartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizadoCartilla de-java-basico-actualizado
Cartilla de-java-basico-actualizado
 
Tiempo en desempleo y salud mental: ¿el género importa?
Tiempo en desempleo y salud mental: ¿el género importa?Tiempo en desempleo y salud mental: ¿el género importa?
Tiempo en desempleo y salud mental: ¿el género importa?
 
10 redenen waarom u ePublishing diensten aan zou moeten bieden
10 redenen waarom u ePublishing diensten aan zou moeten bieden10 redenen waarom u ePublishing diensten aan zou moeten bieden
10 redenen waarom u ePublishing diensten aan zou moeten bieden
 
Introduccion poo con_java
Introduccion poo con_javaIntroduccion poo con_java
Introduccion poo con_java
 
Proposta gestão empresarial
Proposta gestão empresarialProposta gestão empresarial
Proposta gestão empresarial
 
юид смолевичи (2)
юид смолевичи (2)юид смолевичи (2)
юид смолевичи (2)
 
Marketing Advertising: Colorado Therapy Horses /Healing Hearts Campaign
Marketing Advertising: Colorado Therapy Horses /Healing Hearts CampaignMarketing Advertising: Colorado Therapy Horses /Healing Hearts Campaign
Marketing Advertising: Colorado Therapy Horses /Healing Hearts Campaign
 
LECTURA♥
LECTURA♥LECTURA♥
LECTURA♥
 
Epi epc
Epi epcEpi epc
Epi epc
 
A Master CV June 2016
A Master CV June  2016A Master CV June  2016
A Master CV June 2016
 
Gerencia de proyecto mapa
Gerencia de proyecto mapaGerencia de proyecto mapa
Gerencia de proyecto mapa
 
Aeromuniciones ultimo
Aeromuniciones ultimoAeromuniciones ultimo
Aeromuniciones ultimo
 
Exposicion 2016 ptci-unheval
Exposicion 2016 ptci-unhevalExposicion 2016 ptci-unheval
Exposicion 2016 ptci-unheval
 
Java swing
Java swingJava swing
Java swing
 
Makalah membangun jaringan RT/RW Net
Makalah membangun jaringan RT/RW NetMakalah membangun jaringan RT/RW Net
Makalah membangun jaringan RT/RW Net
 
Gene Expression and Treatment in Scleroderma : What Becomes of all those Skin...
Gene Expression and Treatment in Scleroderma : What Becomes of all those Skin...Gene Expression and Treatment in Scleroderma : What Becomes of all those Skin...
Gene Expression and Treatment in Scleroderma : What Becomes of all those Skin...
 

Semelhante a Manuales seminario java-manualdejava-sem 3 - 4

Swing
SwingSwing
Swing
EPN
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
Laura
 
Ejemplo j internalframe_gine
Ejemplo j internalframe_gineEjemplo j internalframe_gine
Ejemplo j internalframe_gine
hrgamaliel
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
Milaly
 
Interfaz gráfica de usuario
Interfaz gráfica de usuarioInterfaz gráfica de usuario
Interfaz gráfica de usuario
aleja0940
 

Semelhante a Manuales seminario java-manualdejava-sem 3 - 4 (20)

Swing
SwingSwing
Swing
 
Programación i
Programación iProgramación i
Programación i
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Flow layout
Flow layoutFlow layout
Flow layout
 
Awt
AwtAwt
Awt
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Eventos
EventosEventos
Eventos
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Guia4 java
Guia4 javaGuia4 java
Guia4 java
 
Ejemplo j internalframe_gine
Ejemplo j internalframe_gineEjemplo j internalframe_gine
Ejemplo j internalframe_gine
 
Curso java 6
Curso java 6Curso java 6
Curso java 6
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Eventos
EventosEventos
Eventos
 
Guia5 java
Guia5 javaGuia5 java
Guia5 java
 
Interfaz gráfica de usuario
Interfaz gráfica de usuarioInterfaz gráfica de usuario
Interfaz gráfica de usuario
 
Temaswing
TemaswingTemaswing
Temaswing
 

Mais de Robert Wolf

Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
Robert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
Robert Wolf
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
Robert Wolf
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
Robert Wolf
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
Robert Wolf
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
Robert Wolf
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfaz
Robert Wolf
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
Robert Wolf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
Robert Wolf
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
Robert Wolf
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
Robert Wolf
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
Robert Wolf
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
Robert Wolf
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Robert Wolf
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
Robert Wolf
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
Robert Wolf
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
Robert Wolf
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
Robert Wolf
 

Mais de Robert Wolf (20)

Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfaz
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 

Manuales seminario java-manualdejava-sem 3 - 4

  • 1. 1 1. JAVA FOUNDATION CLASSES (JFC) JFC es la abreviatura de Java Foundation Classes, que comprende un grupo de características para ayudar a construir interfaces gráficos de usuario (GUIs). Se creo como una extensión de AWT. Comprende las siguientes características:  Componentes Swing.  API de accesibilidad.  Java 2D API  Soporte de Drag and Drop. OBJETIVOS  Conocer y usar objetos básicos de programación con Swing.  Conocer la nueva tecnología para la creación de interfaces gráficas.  Comprender y utilizar las clases JFrame, JPanel y JButton.
  • 2. 2 Jerarquía de clases de Swing 2. La clase JComponent Extiende de Container, la lcual a su vez hereda de la clase Component; todas estas del paquete java.awt. Incluye eventos de y tiene soporte para agregar o quitar componentes al contenedor. 3. Clase JFrame: La clase JFrame implementa un objeto ventana, JFrame es una extensión de la clase Frame del paquete AWT. Para crear una ventana, existen dos formas principales de hacerlo:  Crear un objeto de la clase JFrame  Extender la clase JFrame El último método es muy útil cuando se crean ventanas personalizadas que se invocan repetidamente (como ventanas de error, o de información).  Crearemos una ventana con el primer método: ventana = new JFrame();  Una vez creado una ventana JFrame, ésta obtiene el tamaño necesario para mostrar los componentes que existen dentro de la aplicación, como en nuestro ejemplo no existe componente, Object Graphics Component TextComponent Container TextField TextArea Window Panel ScrollPane Frame Dialog FileDialog Canvas Button Choice Checkbox List Scrollbar Java.applet Applet
  • 3. 3 cambiaremos su tamaño inicial, con el método: setSize(int ancho, int largo) ventana.setSize(200,300);  Después cambiaremos su título para que sea el nombre de nuestra aplicación con el método: setTitle(String titulo) ventana.setTitle("Hola mundo Swing");  El objeto existe, pero no es mostrado por defecto, entonces se hace la llamada a: setVisible(boolean) ventana.setVisible(true); C ó d i g o : S e d e b e n o t a r q u e import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Window extends JFrame { public Window() { this.setSize(400,500); this.setTitle("Primer Aplicacion Swing"); this.setVisible(true); } public static void main(String []args) { new Window(); JFrame jFrameWindow = new JFrame(); jFrameWindow.setSize(400,500); jFrameWindow.setTitle("Segunda Aplicacion Swing"); jFrameWindow.setVisible(true); } }
  • 4. 4 Eventos para cerrar la ventana JPanel JButton JFrame JLabel JFrame JPanel JButton JLabel containers
  • 5. 5 Se puede especificar un comportamiento por defecto al cerrar la ventana utilizando el método setDefaultCloseOperation. Y colocar los siguientes valores:  DO_NOTHING_ON_CLOSE: No hará nada cuando el usuario le de clic en el botón cerrar de la ventana.  HIDE_ON_CLOSE (por defecto): Ocultará la ventana y lo removerá de la pantalla de usuario.  DISPOSE_ON_CLOSE: Oculta y destruye la ventana cuando el usuario la cierra.  EXIT_ON_CLOSE: Termina la ejecución de la aplicación. Es como si usáramos la sentencia System.exit(0).
  • 6. 6 ACTIVIDAD 1. Cree un JFrame con dos botones de comando. Código: class MiPrimerJFrame extends JFrame{ public MiPrimerJFrame(String nombre, int x, int y){ super(nombre); Icon icon= new ImageIcon("images/DUKE.GIF","Un Gif Animado de Duke en Swing"); JLabel label = new JLabel("Swing!",icon,JLabel.CENTER); add(label,BorderLayout.CENTER); this.setSize(x,y); } public static void main(String[] arg){ // --- Creando componentes MiPrimerJFrame jf=new MiPrimerJFrame("Mi Primer JFrame",200,200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } }
  • 7. 7 2. Cree un formulario con una imagen centrada. import java.awt.*; import javax.swing.*; import java.awt.event.*; class JFrame03 extends JFrame{ int nveces=1; JLabel label = new JLabel(); public JFrame03(String nombre, int x, int y){ super(nombre); JButton button = new JButton("boton ",new ImageIcon("images/duke.gif")); button.setMnemonic('b'); // Alt+B o Alt+b button.setFont(new Font("Comic sans", Font.PLAIN, 18)); setLayout(new FlowLayout()); add(button); add(label); setSize(x,y); button.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ label.setText(event.getActionCommand()+" fue activado "+nveces+" veces"); nveces++;} }); } public static void main(String[] arg){ JFrame03 jf=new JFrame03("JFrame con eventos",300,200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } }
  • 8. 8 3. Cree un JFrame que muestre un botón el cual al pulsarlo indique cuantas veces. import java.awt.*; import javax.swing.*; import java.awt.event.*; class JFrame03 extends JFrame{ int nveces=1; JLabel label = new JLabel(); public JFrame03(String nombre, int x, int y){ super(nombre); JButton button = new JButton("boton ",new ImageIcon("images/duke.gif")); button.setMnemonic('b'); // Alt+B o Alt+b button.setFont(new Font("Comic sans", Font.PLAIN, 18)); setLayout(new FlowLayout()); add(button); add(label); setSize(x,y); button.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ label.setText(event.getActionCommand()+" fue activado "+nveces+" veces"); nveces++; } }); } public static void main(String[] arg){ JFrame03 jf=new JFrame03("JFrame con eventos",300,200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true);
  • 9. 9 4. Cree un Frame que muestre los dos tipos de botones: import java.awt.*; import javax.swing.*; class JFrame04 extends JFrame{ Button b1,b2,b3,b4; JButton jb1,jb2,jb3; public JFrame04(String nombre, int x, int y){ super(nombre); setLayout(null); //creando componentes AWT Button b1 = new Button("boton AWT 1"); Button b2 = new Button("boton AWT 2"); Button b3 = new Button("boton AWT 3"); Button b4 = new Button("boton AWT 4"); //creando componentes Swing JButton jb1 = new JButton("b Swing 1"); JButton jb2 = new JButton("b Swing 2"); JButton jb3 = new JButton("b Swing 3"); //definiendo coordenadas botones AWT b1.setBounds(10,10,150,25); b2.setBounds(10,65,150,25); b3.setBounds(10,100,150,25); b4.setBounds(10,130,150,25);
  • 10. 10 La clase JPanel JPanel es un contenedor de propósito general para componentes de peso ligero. Como todos los contenedores, utiliza un Controlador de Distribución para posicionar y dimensionar sus componentes. Como todos los componentes Swing, JPanel permite añadirle bordes y determinar si utiliza el doble buffer para aumentar el rendimiento. Los métodos básicos para trabajar con JPanel son: //definiendo coordenadas botones Swing jb1.setBounds(170,25,100,40); jb2.setBounds(170,65,100,40); jb3.setBounds(170,105,100,40); //agregando botones awt add(b1); add(b2); add(b3); add(b4); //agregando botones swing add(jb1); add(jb2); add(jb3); this.setSize(x,y); } public static void main(String[] arg){ // --- Creando componentes JFrame04 jf=new JFrame04("Comparación de clases",500,400); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } }
  • 11. 11 Para crear un JPanel Método Propósito JPanel() JPanel(boolean) JPanel(LayoutManager) JPanel(LayoutManager, boolean) Crea un panel. Cuando está presente, el parámetro boolean determina la estrategia de buffer del panel. Un valor true indica doble buffer. El parámetro LayoutManager proporciona el controlador de distribución para el nuevo panel. Si no se especifica, el panel utiliza FlowLayout para distribuir sus componentes. Para manejar Componentes en un Contenedor Método Propósito void add(Component) void add(Component, int) void add(Component, Object) void add(Component, Object, int) void add(String, Component) Añade el componente especificado al panel. Cuando existe, el parámetro int es la posición o índice del componente dentro del contenedor. El parámetro Object depende del controlador de distribución y normalmente proporciona información sobre el posicionamiento y restricciones de distribución cuando se añaden componentes. El parámetro String proporciona un nombre para el componente. int getComponentCount() Obtiene el número de componentes en este panel. Component getComponent(int) Component getComponentAt(int, int) Component getComponentAt(Point) Component[] getComponents() Obtiene el componente o componentes especificados. Se pueden obtener basándose en su índice, o en sus posiciones x,y. void remove(Component) void remove(int) void removeAll() Elimina el componente o componentes especificados. Seleccionar/Obtener el Controlador de Distribución Método Propósito void Selecciona u obtiene el controlador de
  • 12. 12 setLayout(LayoutManager) LayoutManager getLayout() distribución para este panel. El controlador de distribución es el responsable de posicionar los componentes dentro del panel de acuerdo con alguna filosofía. Tenemos la siguiente plantilla de JPanel que insertamos en el área cliente de un JFrame. Normalmente en este JPanel ubicamos todos nuestros componentes Swing, además, también podemos insertar en este JPanel otros JPanels. 2. La clase JButton JButton desciende de la clase AbstractButton que define un pequeño API público adicional. La siguiente tabla muestra las subclases de AbstractButton definidas en Swing que podemos utilizar: Clase Sumario JButton Un botón común JCheckBox Un checkbox típico JRadioButton Un botón de radio de un grupo. JMenuItem Un ítem de un menú. JToggleButton Implementa la funcionalidad heredada de JCheckBox y import java.awt.*; import java.awt.event.*; import javax.swing.*; class MiPanel extends JPanel // implements ActionListener, … { // Aquí declaramos los componentes globales public MiPanel() { // Aquí añadimos controles al panel // ... // Adicionamos interface a los componentes // ... } // --------------------------------------------------------------------Para eventos // public void actionPerformed(ActionEvent e) // { // … // } }
  • 13. 13 JRadioButton. JButton en su nueva versión Swing permite insertar sobre él gif animados (como lo veremos en un ejercicio posterior). Las siguientes tablas listan los métodos y constructores más utilizados de AbstractButton y JButton. Seleccionar u obtener el contenido de un botón Método o Constructor Propósito JButton(String, Icon) JButton(String) JButton(Icon) JButton() Crea un ejemplar de JButton, lo inicializa para tener el texto/imagen especificado. void setText(String) String getText() Selecciona u obtiene el texto mostrado en el botón. void setIcon(Icon) Icon getIcon() Selecciona u obtiene la imagen mostrada por el botón, cuando no está seleccionado o pulsado. void setDisabledIcon(Icon) Icon getDisabledIcon() Selecciona u obtiene la imagen mostrada por el botón cuando está desactivado. Si no se especifica una imagen, el aspecto y comportamiento crea una por defecto. void setPressedIcon(Icon) Icon getPressedIcon() Selecciona u obtiene la imagen mostrada por el botón, cuando está pulsado. void setSelectedIcon(Icon) Icon getSelectedIcon() void setDisabledSelectedIcon(Icon) Icon getDisabledSelectedIcon() Selecciona u obtiene la imagen mostrada por el botón cuando está seleccionado. Si no se especifica una imagen de botón desactivado seleccionado, el aspecto y comportamiento crea una manipulando la imagen de seleccionado. setRolloverEnabled(boolean) boolean getRolloverEnabled() void setRolloverIcon(Icon) Icon getRolloverIcon() void setRolloverSelectedIcon(Icon) Icon getRolloverSelectedIcon() Utiliza setRolloverEnabled(true) y setRolloverIcon(someIcon) para hacer que el botón muestre el ícono especificado cuando el cursor pasa sobre él.
  • 14. 14 Ajuste fino de la apariencia del botón Método o constructor Propósito void setHorizontalAlignment(int) void setVerticalAlignment(int) int getHorizontalAlignment() int getVerticalAlignment() Selecciona u obtiene dónde debe situarse el contenido del botón. La clase AbstractButton permite uno de los siguientes valores para alineamiento horizontal: LEFT, CENTER (por defecto), y LEFT. Para alineamiento vertical: TOP, CENTER (por defecto), y BOTTOM. void setHorizontalTextPosition(int) void setVerticalTextPosition(int) int getHorizontalTextPosition() int getVerticalTextPosition() Selecciona u obtiene dónde debería situarse el texto del botón con respecto a la imagen. La clase AbstractButton permite uno de los siguientes valores para alineamineto horizontal: LEFT, CENTER (por defecto), y LEFT. Para alineamiento vertical: TOP, CENTER (por defecto), y BOTTOM. void setMargin(Insets) Insets getMargin() Selecciona u obtiene el número de pixels entre el borde del botón y sus contenidos. void setFocusPainted(boolean) boolean isFocusPainted() Selecciona u obtiene si el botón debería parecer diferente si obtiene el foco. void setBorderPainted(boolean) boolean isBorderPainted() Selecciona u obtiene si el borde del botón debería dibujarse. Implementa la funcionalidad del botón Método o Constructor Propósito void setMnemonic(char) char getMnemonic() Selecciona la tecla alternativa para pulsar el botón. void setActionCommand(String) String getActionCommand(void) Selecciona u obtiene el nombre de la acción realizada por el botón. void addActionListener(ActionListener) ActionListener removeActionListener() Añade o elimina un objeto que escucha eventos action disparados por el botón. void addItemListener(ItemListener) ItemListener removeItemListener() Añade o elimina un objeto que escucha eventos items disparados por el botón. void setSelected(boolean) boolean isSelected() Selecciona u obtiene si el botón está seleccionado. Tiene sentido sólo en
  • 15. 15 botones que tienen un estado on/off, como los checkbox. El código para este programa está dado por 2 clases: Formulario y MiPanel. El código de la clase Formulario fue dado en anteriores páginas, sin embargo, el código de MiPanel es el siguiente: Veamos : import java.awt.*; import java.awt.event.*; import javax.swing.*; class MiPanel extends JPanel implements ActionListener { // -------------------------------------------------------Para variables globales JButton bV= new JButton("Víctor ", new ImageIcon(getClass().getResource("images/V.gif"))); JButton bB= new JButton("Balta ", new ImageIcon(getClass().getResource("images/B.gif"))); // ---------------------------------------------------------------------------------- public MiPanel() { bV.setMnemonic('V'); // Alt+V o Alt+v bV.setFont(new Font("Arial", Font.PLAIN, 18)); bV.addActionListener(this); add(bV); bB.setMnemonic('B'); // Alt+B o Alt+b bB.setFont(new Font("Arial", Font.PLAIN, 18)); bB.addActionListener(this); add(bB); } // --------------------------------------------------------------------------Para eventos public void actionPerformed(ActionEvent e) { if(e.getSource().equals(bV)) setBackground(Color.cyan); if(e.getSource().equals(bB)) setBackground(Color.green); } }
  • 17. 17 1. Concepto: Los layout managers o manejadores de composición, en traducción literal, ayudan a adaptar los diversos Componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrán los Componentes a la hora de colocarlos sobre un Contenedor. Java dispone de varios, en la actual versión, tal como se muestra en la imagen: OBJETIVOS  Comprender y utilizar los diferentes tipos de diseño en Swing.  Crear diversos diseños de JFrame y distribución de objetos en el Frame.
  • 18. 18 a. FlowLayout Es el más simple y el que se utiliza por defecto en todos los Paneles si no se fuerza el uso de alguno de los otros. Los Componentes añadidos a un Panel con FlowLayout se encadenan en forma de lista. La cadena es horizontal, de izquierda a derecha, y se puede seleccionar el espaciado entre cada Componente. Código : Implemente la clase PanelFlowLayout public class PanelFlowLayout extends JPanel { JButton b1=new JButton("Boton 1"); JButton b2=new JButton("Boton 2"); JButton b3=new JButton("Boton 3"); JButton b4=new JButton("Boton 4"); JButton b5=new JButton("Boton 5"); JButton b6=new JButton("Boton 6"); JButton b7=new JButton("Boton 7"); JButton b8=new JButton("Boton 8"); JButton b9=new JButton("Boton 9"); public PanelFlowLayout() { setLayout(new FlowLayout()); add(b1); add(b2); …….
  • 19. 19 Formulario FlowLayout b. BorderLayout La composición BorderLayout (de borde) proporciona un esquema más complejo de colocación de los Componentes en un panel. La composición utiliza cinco zonas para colocar los Componentes sobre ellas: Norte, Sur, Este, Oeste y Centro. Es el layout o composición que se utilizan por defecto Frame y Dialog. El Norte ocupa la parte superior del panel, el Este ocupa el lado derecho, Sur la zona inferior y Oeste el lado izquierdo. public class FormularioFlowLayout extends JFrame{ static int wF=400,hF=300; public FormularioFlowLayout(String s) { super(s); setContentPane(new PanelFlowLayout()); setLocation((getToolkit().getScreenSize().width - wF)/2,(getToolkit().getScreenSize().height - hF)/2); } public static void main(String[] args) { FormularioFlowLayout jf = new FormularioFlowLayout("FlowLayout"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setSize(wF,hF); jf.setVisible(true); } }
  • 20. 20 Diseñe la clase que implemente el BorderLayout. Cree el formulario que permita ver el layout asignado. import java.awt.BorderLayout; import javax.swing.*; public class PanelBorderLayout extends JPanel { JButton sur =new JButton("Sur"); JButton norte =new JButton("Norte"); JButton este =new JButton("Este"); JButton oeste =new JButton("Oeste"); JButton centro =new JButton("Centro"); public PanelBorderLayout() { setLayout(new BorderLayout()); add(sur,BorderLayout.SOUTH); add(norte,BorderLayout.NORTH); add(este, BorderLayout.EAST); add(oeste, BorderLayout.WEST); add(centro, BorderLayout.CENTER); } } public class FormularioBorderLayout extends JFrame{ static int wF=400,hF=300; public FormularioBorderLayout(String s) { super(s); add(new PanelBorderLayout()); setLocation((getToolkit().getScreenSize().width - wF)/2,(getToolkit().getScreenSize().height - hF)/2); }
  • 21. 21 ACTIVIDAD Implemente la clase GridLayout de tal forma que se mueste de la siguiente manera: