Diferencia entre revisiones de «Usuario:ManuelRomero/swing»

De WikiEducator
Saltar a: navegación, buscar
Línea 146: Línea 146:
 
</source>
 
</source>
  
*Hacemos que mi clase sea un  
+
*Hacemos que mi clase sea un JFrame
JFrame
+
===Cajas de texto===
 +
*Elementos donde escribir texto
 +
*Simpre retornan su contenido como un string
 +
[[Archivo:CajasTexto.png‎]]
 +
Tenemos 5 tipos diferentes de cajas de texto como a continuación veremos
 +
JTextField
 +
JTextArea
 +
JPasswordField
 +
JFormattedField
 +
JTextPane
 +
====JTextField====
 +
Construtores
 +
JTextField()
 +
JTextField(int columnas)
 +
JTextField(String texto)
 +
JTextField(String text, int columnas)
 +
JTextField(Document doc, String texto, int columnas)
 +
*El número de columnas detalla la achura en caracteres,
 +
*El texto sería el que aparece como contenido de la caja de texto
 +
Docuemnt es una interfaz de javax.swing.text.Document  que permite especificar el documento que va a contener la caja de texto
 +
*Permite manipular el texto antes de que aparezca en la caja de texto
 +
====JPasswordField====
 +
*Es un TextField, para inserter contraseñas.
 +
*El contenido no se puede ver en claro
 +
Los constructores son los mismo que la clase de la que deriva.
 +
Añade (entre otros), los siguientes métodos propios
 +
char getEchoChar()  Nos da el caracter que se visualiza al escribir
 +
char[] getPassword() Nos da el contenido de la caja de texto como un vector de caracteres
 +
void setEchoChar(char c) Especificamos el carácter que se visualizará al escribir la password

Revisión de 11:19 10 abr 2012

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg



INTEFAZ GRÁFICO EN JAVA

  • Java define el paquete javax.swing como un conjunto de clases para desarrollar interfaces gráficas.
  • Antes eran definidas en java.awt, pero estas no eran independientes de la plataforma
  • siwng de JFC (Java Foundation Classes)
  • En el paquete java.awt siguen estando las clases para gestionar la colocación de objetos gráficos layout y tema de eventos
Las clases de awt de denominan pesadas
Esto implica que los componenetes visuales se traducen a los correspondientes en cada plataforma
Implica que en diferentes entornos podemos tener diferentes visualizacones
El swing casi todos son ligeros
El componente no depende de su equivalente en cada plataforma, está escrito totalmente en java


  • Las clases del paquete siwng están escritas en java puro y sí son independientes de la plataforma
  • Siwng el paquete que define las clases para el interfaz gráfico de java.
  • Actualmente aparece la tecnología javaFX que también incluye desarrollos gráficos, en desarrollos web

CLASIFICACION

  • Los elementos gráficos se pueden clasificar en
  1. Contenedores como una ventana contendrán otros contenedores y contenidos
  2. Contenidos como un botón que necesitans un contenedor para poder aparecer

Los contenedores los tenemos de dos niveles

  1. de primer nivel
  2. de niveles inferiores

Componentes contenidos

  • Defivan de la clase JComponent

JComponent.png

  • Estan definidos en el paquete javax.swing
  • Observar que todoas empiezan por la letra J
  • En los siguientes apartados estudiaremos alguno de ellos
  • Con ello aprenderemos a usar cualquiera.

Componetes contenedores

Existen dos tipos de contenedores nivel superior

JWindow
Ventana sin la barra superior de título ni los botones de cerrar
import javax.swing.JWindow;
public class Ventana {
public static void main(String []s){
	JWindow w = new JWindow();
	w.setBounds(400,300,100,100);
	w.setVisible(true);
  }
}

JWindow.png

JFrame
Es una ventana que ya se puede usar para una aplicacion con sus botones y borde por defecto
import javax.swing.JFrame;
public class marco{
public static void main(String []s){
	JFrame w = new JFrame();
        w.setTitle("Ventan de frame");
	w.setBounds(400,300,100,100);
	w.setVisible(true);
  }
}

JFrame.png

JDialog
Ventana de propósito específico como pedir un dato...
import javax.swing.JDialog;
public class Dialogo{
public static void main(String []s){
	JDialog w = new JDialog();
        w.setTitle("Ventan de dilogo");
	w.setBounds(400,300,100,100);
	w.setVisible(true);
  }
}

JDialog.png

JApplet
Ventana para ver en un navegador
  • Son componentes pesados (Dentro de los componenetes swing son los únicos que tienen esta excepción)
Se caracterizan por
Sólo son contenedores y no pueden ser contenidos en otro contenedor
Son necesarios para que haya un interfaz gráfico

de nivel inferior

Componentes de nivel superior

A su vez tienen tres paneles El panel es una región de contenido del objeto

  • Panel de cristal ===>Contiene el resto de paneles, se usa para albergar todos los eventos que puedan ocurrir en cualquiera de los paneles contenidos
  • Panel de contenidos ==> Es el panel que va a contener el resto de los objetos (contenedores y contenidos)
  • Panel de capas ==> Permite establecer un valor de profundidad de capas.

PanelesComponenet.png Fuente de la image http://docs.oracle.com/javase/tutorial/figures/ui/ui-rootPane.gif

  • En realidad es bastante trasparente para el desarrollador esta existencia de capas,
  • El desarrollador por lo general interactuaemos con el panel de contenidos.

Creando un interfaz gráfico

  • Usaremos el contenedor de primer nivel JFrame
  • Al crear un interfaz gráfico debemos trabajar con la clase JFrame

La clase JFrame tiene muchos métodos


Métodos importantes

setTitle(String titulo) Poner el título de la ventana, también posible en constructor.
setBounds(int posx, int posy, int alto, int ancho) ubicación (esquina superior izquierda y tamaño)
setVisible (Por defecto una ventna no es visible (Objeto pesado)
setDefaultCloseOperation (que hacemos con la aplicación al cerrar la ventana)
setPack() para que se recargue la pantalla (si hacemos cambios)
  • Iremos viendo muchos más métodos según los necesitemos
  • Suelen ser muy .

Cómo crear una aplicación con ventanas

  1. Creamos un objeto de la clase JFrame
  2. Hacemos una clase que extienda de JFrame
import javax.swing.JFrame
class  MiVentana{
 //Atrubuto
 JFrame ventana; 
 //Constructor
 MiVentana{
    ventana = new JFrame("Primera Ventana");
    ventana.setBounds(100,100,300,400);
    ventana.setVisible(true);
 }
 public static void main(String s[]){
 MiVentana v = new MiVentana();
 }
import javax.swing.JFrame
class  MiVentana extends JFrame{
 //Constructor
 MiVentana{
     setTitle("Primera Ventana");
     setBounds(100,100,300,400);
     setVisible(true);
 }
 public static void main(String s[]){
 MiVentana v = new MiVentana();
 }
  • Hacemos que mi clase sea un JFrame

Cajas de texto

  • Elementos donde escribir texto
  • Simpre retornan su contenido como un string

CajasTexto.png Tenemos 5 tipos diferentes de cajas de texto como a continuación veremos

JTextField
JTextArea
JPasswordField
JFormattedField
JTextPane

JTextField

Construtores

JTextField() 
JTextField(int columnas) 
JTextField(String texto) 
JTextField(String text, int columnas) 
JTextField(Document doc, String texto, int columnas) 
  • El número de columnas detalla la achura en caracteres,
  • El texto sería el que aparece como contenido de la caja de texto

Docuemnt es una interfaz de javax.swing.text.Document que permite especificar el documento que va a contener la caja de texto

  • Permite manipular el texto antes de que aparezca en la caja de texto

JPasswordField

  • Es un TextField, para inserter contraseñas.
  • El contenido no se puede ver en claro

Los constructores son los mismo que la clase de la que deriva. Añade (entre otros), los siguientes métodos propios

char getEchoChar()   Nos da el caracter que se visualiza al escribir
char[] getPassword() Nos da el contenido de la caja de texto como un vector de caracteres
void setEchoChar(char c) Especificamos el carácter que se visualizará al escribir la password