Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programa Educativo
INGIENERIA ELECTRONICA
Experiencia Educativa
Docente
Trabajo
Estudiante
Grupo
Objetivos:
AWT y Swing
java provee dos API's con las que podemos trabajar para desarrollar GUIs, la más básica
es AWT (Abstrct Window Toolkit). Las más desarrolladas se hacen con Swing, las cuales
son más identificables ya que todas comienzan con "J", por ejemplo: JButton, JTextField,
JTextArea, JPanel y JFrame son clases de Swing.Todo el manejo de eventos y layouts es
exactamente el mismo para AWT y Swing.
La clase JFrame:
Ejemplo:
package flowlayaout;
import java.awt.*;
Ventana
1. Jpanel:
Componente con un layout manager propio, y que puede contener varios componentes en
su interior.
Ejemplo:
package paquete;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public PanelPrincipal(){
super("Panel principal");
setSize(400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rojo.addActionListener(arriba);
azul.addActionListener(arriba);
panel2.add(rojo);
panel2.add(azul);
principal.setBorder(BorderFactory.createLineBorder(Color.black));
panel2.setBorder(BorderFactory.createLineBorder(Color.black));
arriba.setBorder(BorderFactory.createLineBorder(Color.black));
principal.add(arriba);
principal.add(panel2);
setVisible(true);
}
}
class PanelArriba extends JPanel implements ActionListener{
PanelPrincipal pa;
public PanelArriba(PanelPrincipal princip){
this.pa=princip;
@Override
public void actionPerformed(ActionEvent e) {
Object ob=e.getSource();
if(ob==pa.azul){
setBackground(Color.blue);
}else if(ob==pa.rojo){
setBackground(Color.red);
}
}
}
Ventana:
El tercer control visual de uso muy común es el que provee la clase JButton. Este control
visual muestra un botón.
El proceso para añadir botones a un control JFrame es similar a añadir controles de tipo
JLabel.
Ahora veremos la captura de eventos con los controles visuales. Uno de los eventos más
comunes es cuando hacemos clic sobre un botón.
Java implementa el concepto de interfaces para poder llamar a métodos de una clase
existente a una clase desarrollada por nosotros.
Ejemplo:
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener {
JButton boton1;
public Formulario() {
setLayout(null);
boton1=new JButton("Finalizar");
boton1.setBounds(300,250,100,30);
add(boton1);
boton1.addActionListener(this);
}
2. JLabel:
Muestra una pequeña área de texto o imagen en la Interfaz gráfica de usuario.El objeto de
la clase JLabel es un componente para colocar texto en un contenedor. Se utiliza para
mostrar una sola línea de texto de solo lectura. El texto puede ser cambiado por una
aplicación pero un usuario no puede editarlo directamente. Hereda la clase JComponent.
Ejemplo:
JLabel l1,l2;
l1.setBounds(50,50, 100,30);
l2.setBounds(50,100, 100,30);
f.add(l1); f.add(l2);
f.setSize(300,300);
f.setLayout(null);
f.setVisible(true);
}
}
Ventana:
JTextField:
package paquete;
import java.awt.FlowLayout;
import javax.swing.*;
public class Ejemplo {
JTextField texto;
public Ejemplo(){
JFrame ventana = new JFrame("Caja de Texto en Java");
texto = new JTextField(10);
ventana.setLayout(new FlowLayout());
ventana.setSize(450, 400);
ventana.setVisible(true);
ventana.add(texto);
}
public static void main (String[]args){
Ejemplo t = new Ejemplo();
}
}
Ventana:
Componente que muestra un control para ingresar varias líneas de texto y editarlo.El control
de tipo JTextArea permite ingresar múltiples líneas, a diferencia del control de tipo
JTextField.
Ejemplo:
package ejemplo;
import javax.swing.*;
public class Formulario extends JFrame{
private JTextField textfield1;
private JTextArea textarea1;
public Formulario() {
setLayout(null);
textfield1=new JTextField();
textfield1.setBounds(10,10,200,30);
add(textfield1);
textarea1=new JTextArea();
textarea1.setBounds(10,50,400,300);
add(textarea1);
}
Ejemplo:
package ejemplo;
import javax.swing.*;
public class Formulario extends JFrame{
private JTextField textfield1;
private JTextArea textarea1;
public Formulario() {
setLayout(null);
textfield1=new JTextField();
textfield1.setBounds(10,10,200,30);
Ventana:
JCheckBox:
Ejemplo:
package paquete;
import javax.swing.*;
import javax.swing.event.*;
public class Formulario extends JFrame implements ChangeListener{
private final JCheckBox check1;
private final JCheckBox check2;
private final JCheckBox check3;
public Formulario() {
setLayout(null);
check1=new JCheckBox("Inglés");
check1.setBounds(10,10,150,30);
check1.addChangeListener(this);
add(check1);
check2=new JCheckBox("Francés");
check2.setBounds(10,50,150,30);
check2.addChangeListener(this);
add(check2);
check3=new JCheckBox("Alemán");
check3.setBounds(10,90,150,30);
check3.addChangeListener(this);
add(check3);
}
Ventanas:
JRadioButton:
Componente para mostrar varias opciones de las cuales sólo se puede seleccionar
una.Otro control visual muy común es el JRadioButton que normalmente se muestran un
conjunto de JRadioButton y permiten la selección de solo uno de ellos. Se los debe agrupar
para que actúen en conjunto, es decir cuando se selecciona uno automáticamente se deben
deseleccionar los otros.
Ejemplo:
package paquete;
import javax.swing.*;
import javax.swing.event.*;
class Formulario extends JFrame implements ChangeListener{
private final JRadioButton radio1;
private final JRadioButton radio2;
private final JRadioButton radio3;
public Formulario() {
setLayout(null);
Ventanas:
Usado para implementar una lista desplegable de varias opciones de las cuales sólo se
puede seleccionar una. El control JComboBox permite seleccionar un String de una lista.
Para inicializar los String que contendrá el JComboBox debemos llamar al método addItem
tantas veces como elementos queremos cargar.
Un evento muy útil con este control es cuando el operador selecciona un Item de la lista.
Para capturar la selección de un item debemos implementar la interface ItemListener que
contiene un método llamada itemStateChanged.
Ejemplo:
package paquete;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
Ventana:
JList:
Ejemplo:
package paquete;
import javax.swing.*;
import java.awt.*;
class JListYMas{
public static void main(String[] args){
//Creación de la ventana
JFrame ventana = new JFrame("Ejemplo JList con Scroll");
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setBounds(200,250,300,200);
ventana.setLayout(new GridLayout());
lista.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
//selecciona un elemento de la lista
//recoge el indice de los seleccionados
// aquí se crea el objeto, es decir la barra de desplazamiento
JScrollPane barraDesplazamiento = new JScrollPane(lista);
barraDesplazamiento.setBounds(10,30,200,110);
//Agrega la barra de desplazamiento al panel
panel.add(barraDesplazamiento);
ventana.add(panel);
ventana.setVisible(true);
Ventana:
JTable:
Permite implementar una tabla para poder mostrar Información en sus celdas.
Ejemplo:
package ejemplo;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Ventana:
Ejemplo:
package com.chuidiang.ejemplos.scroll_pane_text_area;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* Ejemplo de JTextArea metido en un JScrollPane.
ventana.getContentPane().add(scrollPane);
ventana.pack();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setVisible(true);
}
}
Ventana:
Cuando vamos a escribir una contraseña o alguna otra palabra que deseamos que no
aparezca visualmente en el campo sino más bien algún caracter (lo más común son unos
puntitos), existe lo llamado JPasswordField. Es un campo de texto (como el JTextField)
solo que cuando escribimos aparecerán los puntitos o el caracter que nosotros
seleccionamos.
Ejemplo:
package paquete;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class Password extends JFrame {
public Password() {
add(ingresarUsuario());
add(ingresarContrasenia());
add(jtaUsuario());
// Inicializador de la Ventana
private void inicializador() {
setSize(400, 200);
setLayout(null);
setTitle("Login");
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
Ventana:
JFormattedTextField
package paquete;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;
Ventana:
Como ya hemos comentado, el JEditorPane admite texto con cierto formato. Por defecto
conoce el texto plano, el HTML y el RTF, aunque debemos decirle a priori qué es lo que va
a usar.
Para los formatos que java entiende, java nos proporciona clases que heredan
de EditorKit y saben tratar los tipos de texto mencionados, pero el JEditorPane las maneja
internamente y no nos enteraremos de su existencia, pero que sepas que
son DefaultEditorKit, HTMLEditorKit y RTFEditorKit.
Ejemplo de JEditorPane:
package ejemplo;
import javax.swing.*;
import java.io.IOException;
import java.net.URL;
JEditorPane editor;
try {
editor=new JEditorPane(new
URL("http://roger1345.byethost17.com/javazone/JEditorPane/JavaZone.txt"))
;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
add(editor);
}
JTextPane es otro editor que admite colores, fuentes, tamaños, etc. Admite incluso que el
pongamos directamente iconos pasándole una clase Icon de java o que le
añadamos Component de java, como JButton, JLabel, etc.
Para añadir texto, debemos ir añadiéndolo indicando en cada caso que "atributos"
queremos para ese texto. Si lo queremos en negrita, con tal fuente de letra, tamaño, tal
color, etc.
Ejemplo:
ackage chuidiang.ejemplos.JEditorPane;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
/**
* Ejemplo de un JTextPane
*
* @author Chuidiang
*
*/
public class EjemploJTextPane
{
/**
* Crea un nuevo objeto EjemploJTextPane.
*/
public EjemploJTextPane()
{
// En negrita
StyleConstants.setBold(attrs, true);
editor.getStyledDocument()
.insertString(
editor.getStyledDocument().getLength(),
"Negrita", attrs);
insertaNuevaLinea(editor);
// En cursiva
StyleConstants.setItalic(attrs, true);
StyleConstants.setBold(attrs, false);
editor.getStyledDocument()
.insertString(
editor.getStyledDocument().getLength(),
"cursiva", attrs);
insertaNuevaLinea(editor);
editor.setCaretPosition(editor.getStyledDocument().getLength());
// Un icono
ImageIcon icono = new ImageIcon("d:/viejo.gif");
editor.insertIcon(icono);
insertaNuevaLinea(editor);
editor.setCaretPosition(editor.getStyledDocument().getLength());
// insertamos un JButton
JButton boton = new JButton("Pulsame");
editor.insertComponent(boton);
// Visualizamos la ventana.
v.pack();
/**
* main de la clase
*
* @param args se ignoran
*/
public static void main(String[] args)
{
new EjemploJTextPane();
}
/**
* Inserta un fin de linea en el editor
*
* @param editor Editor en el que poner el fin de línea
*
* @throws BadLocationException Si se intenta insertar fuera del
texto.
*/
private void insertaNuevaLinea(JTextPane editor)
throws BadLocationException
{
// Atributos null
editor.getStyledDocument()
.insertString(
editor.getStyledDocument().getLength(),
System.getProperty("line.separator"), null);
}
}
Ventana:
JTree
El JTree es la componente java visual (como los botoncitos, listas, menús, etc) que nos
permite visualizar un árbol. En él podemos ver el típico árbol de datos en el que podemos
abrir cada uno de los nodos para ver qué tiene dentro, cerrarlos, etc. Similar al árbol de
directorios que nos muestran algunas aplicaciones para elegir un fichero.
Aunque el JTree es muy configurable, en este tutorial sólo veremos cómo usarlo de una
forma sencilla, usando las clases por defecto que java nos ofrece para ello.
Ejemplo:
package ejemplo;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
public java1414() {
setLayout( new BorderLayout() );
raiz = new DefaultMutableTreeNode( "raiz" );
arbol = new JTree( raiz );
// Se añade el árbol y se hace sobre un ScrollPane, para
// que se controle automáticamente la longitud del árbol
// cuando está desplegado, de forma que aparecerá una
// barra de desplazamiento para poder visualizarlo en su
// totalidad
add( new JScrollPane( arbol ),BorderLayout.CENTER );
// Se obtiene el modelo del árbol
modelo =(DefaultTreeModel)arbol.getModel();
Ventana:
Esto es un ejemplo de como usar el JScrollPane. Para ello vamos a meter una imagen
(puede ser un fichero .gif, .jpg o .png en versiones modernas de java) dentro de un JLabel
y esta a su vez dentro de un JScrollPane. Todo ello dentro de un JFrame para visualizarlo.
Tal cual está hecho el código, el JFrame saldrá con el tamaño necesario para ver la imagen
completa (la línea que pone ventana.pack() hace eso). Para que aparezcan las barras de
scroll hay que redimensionar la ventana, haciéndola más pequeña que la imagen. También,
en el código, se podría usar el método setVertical ScrollBarPolicy
(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) de JScrollPane para obligar a que salga
Ejemplo:
package com.chuidiang.ejemplos.scroll_pane_text_area;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* Ejemplo de JTextArea metido en un JScrollPane.
*
* @author Chuidiang
*
*/
public class EjemploScrollPaneTextArea {
ventana.getContentPane().add(scrollPane);
ventana.pack();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setVisible(true);
}
}
Ventana:
Este componente es un contenedor el cual contiene unas pestañas, esto es muy util ya que
solo esta visible lo que está en la pestaña actual y las otras quedan ocultas. Ahora vamos
a ver cómo crear un JTabbedPane, algunos de sus metodos y Applets que nos van a ayudar
a tener una idea más clara de cómo usar los JTabbedPane.
Ejemplo:
package ejemplo;
import javax.swing.*;
Ventana Ejemplo:
El JSpinner es un componente javo en el que se presenta una caja de texto con dos flechitas
en el lado derecho, una hacia arriba y la otra hacia abajo. En el campo de texto se muestra
un valor. Con las flechitas arriba y abajo podemos incrementar o decrementar ese valor.
Ejemplo:
package ejemplo;
import javax.swing.*;
// frame
static JFrame f;
// text areas
static JTextArea t1, t2;
// main class
public static void main(String[] args)
{
// create a new frame
f = new JFrame("frame");
// create a object
// create a panel
JPanel p1 = new JPanel();
JPanel p = new JPanel();
// set texts
// create a splitpane
JSplitPane sl = new JSplitPane(JSplitPane.VERTICAL_SPLIT, p1, p);
// add panel
f.add(sl);
f.show();
}
}
Ventana:
JSlider:
Ejemplo:
package ejemplo;
// frame
static JFrame f;
// slider
static JSlider b;
// main class
public static void main(String[] args)
{
// create a new frame
f = new JFrame("frame");
// create a object
solve s = new solve();
// create a panel
JPanel p = new JPanel();
// create a slider
b = new JSlider();
f.add(p);
f.show();
Ventana:
JSeparator:
extiende JComponent
Ejemplo:
// main class
public static void main(String args[])
{
// create a frame
JFrame f = new JFrame("seperator");
// create a panel
JPanel p =new JPanel();
// create a label
JLabel l = new JLabel("this is label 1");
JLabel l1 = new JLabel("this is label 2");
// create a seperator
JSeparator s = new JSeparator();
p.add(l);
p.add(s);
p.add(l1);
// set layout
p.setLayout(new GridLayout(1,0));
f.add(p);
Ventana:
Ejemplo:
package ejemplo;
// create a frame
static JFrame f;
static JProgressBar b;
// create a frame
f = new JFrame("ProgressBar demo");
// create a panel
JPanel p = new JPanel();
// create a progressbar
b = new JProgressBar(SwingConstants.VERTICAL);
b.setStringPainted(true);
// add progressbar
p.add(b);
// add panel
f.add(p);
fill();
}
Ventana:
JToolBar
Vamos a hacer un ejemplo sencillo de JToolBar, para ver cómo funciona Preparamos
una ventana principal JFrame que tiene por defecto un BorderLayout. Este layout tiene
cinco zonas, una central para la parte principal de nuestra aplicación y cuatro laterales
(arriba, abajo, derecha e izquierda) pensadas precisamente para menús, barras de botones,
de estado, etc. En la zona central metemos un JTextArea.
Listo, eso es todo lo que tenemos que hacer. Arrancamos la aplicación y veremos que el
JToolBar en su zona izquierda, tiene un cuadrito con puntos. Podemos arrastrarlo dentro
de la ventana para situarlo en una nueva ubicación (EAST, SOUTH o WEST) y cambiará
automáticamente su orientación, poniendo los botones en horizontal o vertical según se
necesite. Si lo soltamos lejos de estas zonas de la ventana, quedará como un a ventana
flotante.
Ejemplo:
package com.chuidiang.ejemplos.toolbar;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
public PruebaJToolBar() {
JFrame ventanaPrincipal = new JFrame("Prueba JToolBar");
JTextArea componentePrincipal = new JTextArea(25, 80);
ventanaPrincipal.getContentPane().add(componentePrincipal);
ventanaPrincipal.getContentPane().add(toolBar,
BorderLayout.NORTH);
ventanaPrincipal.pack();
ventanaPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventanaPrincipal.setLocationRelativeTo(null);
ventanaPrincipal.setVisible(true);
Ventana:
JToolBar.Separator
package ejemplo;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;
toolBar.setFloatable(false);
toolBar.setRollover(true);
toolBar.add(new JButton("New"));
toolBar.addSeparator();
toolBar.add(new JButton("Open"));
frame.add(toolBar, "North");
frame.setSize(300, 200);
frame.setVisible(true);
}
Ventana.
Valor: Pixeles
Ejemplo:
VSpacer (Atributo):
Valor: Pixeles
Indica el número de espacios en blanco que se seben insertar por encima y debajo de la
imagen.
Ejemplo:
4. Conclusión:
5. Bibliografía:
• http://www.chuidiang.org/java/ejemplos/JFormattedTextField/EjemplosJFormatt
edTextField.php#integer
• https://es.stackoverflow.com/questions/34710/maskformatter-a-un-textfield-
para-n%C3%BAmero-de-telefono-en-java-eclipse-windowsbuil
• http://www.myjavazone.com/2010/06/jeditorpane.html
• http://www.chuidiang.org/java/ejemplos/JEditorPane-
JTextPane/EjemploJTextPane.java.html
• http://chuwiki.chuidiang.org/index.php?title=JScrollPane
• http://www.myjavazone.com/2010/06/jtabbedpane.html
• https://www.geeksforgeeks.org/java-swing-jsplitpane-examples/
• https://www.geeksforgeeks.org/java-swing-jslider/
• https://www.geeksforgeeks.org/java-swing-jseparator-with-examples/
• https://www.geeksforgeeks.org/java-swing-jprogressbar/
• http://chuwiki.chuidiang.org/index.php?title=Ejemplo_simple_de_JToolBar
• http://www.java2s.com/Tutorial/Java/0240__Swing/AddingseparatorforJToolBar
.htm
• https://riunet.upv.es/bitstream/handle/10251/18056/memoria.pdf?sequence=1
• http://geneura.ugr.es/beatriz/contenido7.html
• https://www.geeksforgeeks.org/java-swing-jprogressbar/
• http://chuwiki.chuidiang.org/index.php?title=Ejemplo_simple_de_JToolBar
• http://www.myjavazone.com/2010/06/jtabbedpane.html
• http://www.chuidiang.org/java/ejemplos/JEditorPane-JTextPane/JEditorPane-
• http://chuwiki.chuidiang.org/index.php?title=Ejemplo_simple_de_JToolBar
• https://www.geeksforgeeks.org/java-swing-jslider/