Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Aplicaciones
• Se pueden ejecutar directamente en un entorno Java
• Tipos
❏ Modo de consola
-Interacción mediante teclado
Interfaces gráficas de usuario (GUI) ❏
-Interfaz basado en texto
Aplicaciones con interfaz gráfico (GUI)
-Ventanas graficas para entrada y salida de datos
-Iconos
Swing -Dispositivos de entrada (e.g. ratón, teclado)
-Interacción directa
• Applets
• Pequeñas aplicaciones que se ejecutan dentro de un navegador
(o en el visualizador de applets - Appletviewer)
❏ Interfaz gráfico
❏ Limitaciones por motivos de seguridad
Java 1 Java 2
Java 3 Java 4
Componentes del Swing Jerarquía de componentes del AWT
• Contenedores Jerarquía de clases
• Contienen otros componentes (o contenedores) Object
❏ Estos componentes se tienen que añadir al contenedor y para ciertas
operaciones se pueden tratar como un todo
❏ Mediante un gestor de diseño controlan la disposición (layout) de estos Graphics Component Button
componentes en la pantalla
❏ Ejemplo: JPanel, JFrame, JApplet Canvas
• Lienzo (clase Canvas) TextComponent Container
Checkbox
• Superficie simple de dibujo
• Componentes de interfaz de usuario TextField TextArea Window Panel
Choice
Java 7 Java 8
Ejemplo - GUI simple con un JFrame Jerarquía de composición
import javax.swing.*; • Contenedores de alto nivel
public class GUISimple extends JFrame {
public GUISimple (){ • Contenedores intermedios Ventana (JFrame)
setSize(200, 100);
• Componentes atómicos Panel raíz
setVisible(true);
} Panel de contenido
Java 9 Java 10
J D ialog JF ram e
Java 11 Java 12
JFrame JDialog
• La clase JFrame proporciona una ventana principal de • La clase JDialog es la clase raíz de las ventanas
aplicación con su funcionalidad normal (p.e. borde, título, secundarias que implementan cuadros de diálogo en
menús) y un panel de contenido. Swing.
• Los contenidos se añaden en el panel de contenidos • dependen de una ventana principal (normalmente JFrame) y si
(content pane) accesible a través del método la ventana principal se cierra, se iconiza o se desiconiza las
getContentPane (por defecto, un objeto de tipo Jpane, ventanas secundarias realizan la misma operación de forma
aunque puede cambiarse con setContentPane). automática.
• La barra de menú puede fijarse con setJMenuBar. • Las ventanas modales bloquean la interacción del usuario
con otras ventanas.
• Se utilizan sólo cuando hay que garantizar que el usuario
recibe un mensaje o proporciona una información que es
necesaria.
Java 13 Java 14
Java 17 Java 18
Java 21 Java 22
Java 23 Java 24
Botones Botones y Menús
• Los botones, junto con los menús, son los controles más típicos JC om p on en t
Java 29 Java 30
JTextArea JList
• Una forma simple de editar/visualizar varias líneas de texto. • La clase JList implementa una lista de elementos que se
• Con append es posible añadir texto. También existe presenta en forma de columna.
getText y setText (JTextField y JTextArea heredan ambos • En esta lista el usuario puede realizar la selección de uno
de JTextComponent). (comportamiento por defecto) o varios de sus elementos.
public class PanelTexto extends JPanel { • El contenido de una lista viene dado por su modelo de
final String FIN = "\n";
public PanelTexto(){ datos que debe implementar la interfaz Java ListModel
setLayout(new BorderLayout());
JTextField campoTexto = new JTextField("Campo Texto");
• DefaultListModel clase que da una implementación por
add(campoTexto, BorderLayout.NORTH); defecto del modelo de datos de lista
String texto = FIN+"Area texto"+FIN+"varias líneas";
JTextArea areaTexto = new JTextArea(texto);
add(areaTexto, BorderLayout.CENTER);
}
}
Java 31 Java 32
JList JComboBox
• Esta clase implementa un cuadro combinado desplegable,
DefaultListModel modeloDatos = new DefaultListModel();
for (int ind=0; ind<10; ind++) en el que se agrupan las funcionalidades de una lista y un
modeloDatos.addElement("elemento "+ ind); campo de texto
JList lista = new JList(modeloDatos); public class PanelComboBox extends JPanel {
// se añade un nuevo elementos al modelo String[] listaElementos = new String[15];
modeloDatos.addElement("Elemento añadido"); public PanelComboBox(){
lista.setSelectionMode( for (int ind=0; ind<listaElementos.length; ind++)
ListSelectionModel.SINGLE_INTERVAL_SELECTION); listaElementos[ind]= new String("elemento "+ ind);
JScrollPane panelDesplazamiento = new JScrollPane(lista); JComboBox combo1 = new JComboBox(listaElementos);
JComboBox combo2 = new JComboBox(listaElementos);
// el segundo se hace editable
combo2.setEditable(true);
combo2.setSelectedItem("OTRO");
// sólo se visualizan 5 filas
combo2.setMaximumRowCount(5);
add(combo1);
add(combo2);
}
}
Java 33 Java 34
Java 35 Java 36
Otros administradores Administradores de diseño
• GridBagLayout
• Similar al GridLayout pero mas versátil
• Presenta los componentes en una rejilla, pero:
❏ Un componente puede ocupar más de una fila y más de una columna
❏ Las filas y las columnas pueden tener tamaños diferentes
❏ No se tiene que rellenar en un orden predeterminado
Java 37 Java 38
Java 39 Java 40
Resultado BoxLayout La clase Graphics
• Clase abstracta que es la base para los contextos gráficos
que permiten a una aplicación dibujar los componentes
independientemente del dispositivo de salida
• Un contexto gráfico es un objeto que funciona junto con las
ventanas para mostrar los objetos gráficos
• Habitualmente no hay que crear ningún contexto gráfico ya
que esto es parte del framework de AWT
❏ Se obtiene mediante el método getGraphics()
• Mediante el método paint(Graphics contexto) se determina
que es lo que se debe mostrar en dicho contexto
La captura de la izquierda es la situación por defecto, en la central se
introduce “pegamento” entre los botones tres y cuatro, y la captura de la
derecha es con “pegamento” entre todos los botones.
Java 41 Java 42
Java 43 Java 44