Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Java 120706083911 Phpapp01 PDF
Java 120706083911 Phpapp01 PDF
La librería Swing
//java.sun.com/docs/books/tutorial/uiswing
//programacion.com/java/tutorial/swing/
PROGRAMACIÓN CONDUCIDA POR EVENTOS
Código
del
sistem
a
Su código
GENERACIÓN DE EVENTOS
GUI
2D API
JFC APIs
Accessibility
JAVA FOUNDATION CLASSES
SWING
• javax.swing
• javax.swing.plaf • javax.swing.table
• javax.swing.plaf.basic • javax.swing.tree
• javax.swing.plaf.metal • javax.swing.border
• javax.swing.plaf.multi • javax.swing.colorchooser
• javax.swing.filechooser
• javax.swing.text
• javax.swing.text.html
• javax.swing.text.html.parser
• javax.swing.event
• javax.swing.text.rtf • javax.swing.undo
PAQUETES JFC/SWING
Componentes,
Control del incluyendo
“Look & Feel” componentes
de Swing complejos
java.awt.Panel java.awt.Window
java.applet.Applet java.awt.Dialog
java.awt.Container
JMenu
JMenuBar
JComponent
JLayeredPane
JRootPane
JPanel
JTabbedPane
JDesktopPane
JSplitPane
JPopupMenu JInternalFrame JScrollPane
JOptionPane JToolbar
Similar a
AWT
Nuevos
de Swing
COMPONENTES DE SWING
Usualmente es un JPanel.
En la mayoría de las aplicaciones Swing contiene casi
todo, excepto la barra de menú.
Debe ser creado explícitamente.
LAYERED PANES
TabbedPane Toolbar
CONTENEDORES ESPECIALES
InternalFrame LayeredPane
Root Pane
JFRAME
ALGUNOS MÉTODOS DE JFRAME
DO_NOTHING_ON_CLOSE
import javax.swing.*;
public class HelloWorldSwing {
public static void main(String[] args) {// crear un nuevo frame
JFrame frame = new JFrame("HelloWorldSwing");
// crear una etiqueta y añadir al frame
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
//especifica la operación de cierre de la ventana
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// muestra el frame en pantalla
frame.pack(); frame.setVisible(true);}}
COMPONENTES ATÓMICOS
Propiedades JButton
Métodos
Eventos
COMPONENTES GUI
1.- Crear
Instanciar objeto: b = new JButton(“press me”);
2.- Configurar
Propiedades: b.text = “press me”; (evitar en Java)
Métodos:
b2 = new JButton("Middle button", middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M);
b2.setToolTipText("This middle button does nothing “
+ "when you click it.");
3.- Añadir
panel.add(b);
4.- Manejar eventos
CARACTERÍSTICAS ESPECIALES
Tool tips
JButton button = new JButton ("Compute");
button.setToolTipText ("Calculate size.");
Mnemonic
button.setMnemonic ("C");
Disable
JButton button = new JButton (“Do It”);
button.setEnabled (false);
CARACTERÍSTICAS ESPECIALES
Bordes
JPanel myPanel = new JPanel();
Border myBorder = BorderFactory.createEtchedBorder();
myPanel.setBorder(myBorder);
Empty Titled
Line Matte
Etched Compound
Bevel
BORDES
ANATOMÍA DE UNA APLICACIÓN GUI
JFrame
JFrame
JPanel contenedores
JPanel
JButton
JButton JLabel
JLabel
Estructura interna
GUI
USO DE UN COMPONENTE GUI
1. Crearlo
2. Configurarlo
orden
3. Añadir hijo (si es contenedor) importante
4. Añadir al padre (si no es JFrame)
5. Manejar los eventos
CONSTRUCCIÓN BOTTOM UP
Listener
Crear:
Frame
JLabel JButton
Panel
Componentes
Listener JPanel
Añadir (bottom up)
Listeners a los componentes
Componentes al panel JFrame
Panel al Frame
WINDOW LAYOUT
contenedores
componentes
WINDOW LAYOUT
ninguno,
Left to right,
programador
Top to bottom
setea x,y,w,h
s
NULL LAYOUT
setLayout(null);
El programador es responsable de establecer el tamaño y
posición de cada componente (setBounds(x,y,w,h))
COMBINACIONES
JButton JButton
JTextArea
COMBINACIONES
JButton JButton
JFrame
n JPanel: FlowLayout
JPanel: BorderLayout
c
JTextArea
TAREAS COMUNES DEL LM
de alineamiento:
setAllignmentX(float), setAlignmentY(float)
label
rigidArea(0,5) Center
JScrollPane
South
horizont Box.createHorizontalGlue()
Glue al
vertical Box.createVerticalGlue()
new Box.Filler(minSize,
customBox.Filler prefSize, maxSize)
OTRAS ESTRATEGIAS SWING
JSplitPane
JTabbedPane (CardLayout)
JToolBar
PASOS EN EL DESARROLLO DE UNA APLICACIÓN
SIMPLE CON GUI
Todo lo
demás:Programador
JButton
CUÁNDO SE PINTA?
JComponent
paint paintComponent
paintBorder
Nunca llamar paintChildren
paint() extends
directamente. JPanel
Llamar repaint() paint paintComponent
paintBorder
paintChildren
extends
El método
PaintPanel correcto a
paint paintComponent anular en
paintBorder pintado custom
paintChildren
PINTADO
paint(Graphics g) paintComponent(Graphics g)
paintBorder(Graphics g)
paintChildren(Graphics g)
(0, 0)
X
Component
•JButChange.setRolloverIcon(myImage4);
CARGA DE IMÁGENES
myImage =
Toolkit.getDefaultToolkit().getImage(filenameOrURL);
retorna inmediatamente, no hay que esperar que la imagen se
cargue antes de realizar otras operaciones. Algunos programas
requieren más control o información acerca de la carga:
clase MediaTracker
método imageUpdate de la interface ImageObserver (útiles
ambas también para no mostrar una imagen hasta que esté
completamente cargada o informar a ProgressBar)
MOSTRAR IMÁGENES
Timer
Timer timer = new Timer(delay, this);
…//this:action handler
public synchronized void startAnimation() {
if (!timer.isRunning()) {timer.start();}
} …
public synchronized void stopAnimation() {
if (timer.isRunning()) { timer.stop();}}