Está en la página 1de 54

UNIVERCIDAD DE PAMPLONA

FACULTAD DE INGIENERIAS Y AQUITECTURA

Programa Educativo

INGIENERIA ELECTRONICA

Experiencia Educativa

PROGRAMACION AVANZADA DE ELECTRO

Docente

Luis Alberto Muños Bedoya

Trabajo

INTERFAZ DE GRAFICA SWING

Estudiante

Johan Sánchez Ramos (1002448204)

Grupo

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 1
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
INTRODUCCION

En la siguiente investigación le daremos a conocer las diferentes funcionalidades de la


interfaz gráfica con Swirg, para así tener más claro este procedimiento en programación
java, en lo cual mostraremos unas series de procedimientos los cuales permite reforzar
los conocimientos aprendidos con anterioridad.

Aprenderemos a colocar un pequeño texto el venta de Swing at través JLabel, el cual


nos permite colocar cualquier tipo de texto ya sea título, o incluso un texto completo, todos
estos conceptos nos ayudaran al momento de querer crear una interfaz gráfica en
cualquier programa de programación; podremos ver diferentes componentes de swing los
cuales tienen funcionalidad diferente unos nos permiten crear botones de ingreso como lo
es el JButton, un componente muy utilizado al momento de querer implementar un botón
en la venta . Esta metodología permite crear ventanas de interfaz de una forma más
sencilla y práctica. Al momento de saber cómo funcionan cada uno de estos
componentes, vamos a tener un mundo de opciones los cuales nos permitirá ir avanzando
poco a poco, hasta tener la capacidad de crear interfaces más complejas, con muchas
opciones, pero te preguntaras que ¿más componentes de swing habrá? Pues esta
investigación te mostraremos cada uno de estos componentes dándote detalla mente su
función, junto con un ejemplo, el cual te permitirá ejecutarlo en tú programa de Intellij
IDEA o en cualquier otro programa y recuerda que en la programación el único obstáculo
eres tú; tu gran imaginación te permitirá desarrollar múltiples programas, de los cuales vas
a necesitar lo aprendido en estos textos.

Objetivos:

• Aprender a utilizar estos componentes en una Interfaz gráfica s de Swing


• Consultar a fondo como trabaja cada uno de estos componentes
• Saber como y cuando se coloca un componente de Swing

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 2
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
MARCO TEORICO

Interfaz de grafica Swing

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:

proporciona operaciones para manipular ventanas.

Ejemplo:

package flowlayaout;

import java.awt.*;

public class Ventanal extends Frame {


//Defino tres btones
private Button b1,b2,b3;

public Ventanal (){


//El constructor del padre recibe el titulo de la ventana
super("venta 1");
//Defino el layout que va a tener la ventana> FlowLayout
setLayout(new FlowLayout());
//Instancio el primer boton y lo agrego al contenedor
b1=new Button("Botton 1");
add(b1);
//Instancio el segundo boton y lo agrego al contenedor

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 3
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
b2=new Button("Boton 2");
add(b2);
//Instancio el tecer boton y lo agrego al contenedor
b2=new Button("Boton 3");
//Defino el size de la ventana y la hago visible
setSize(400,300);
setVisible(true);
}

public static void main(String[] args) {


Ventanal v1=new Ventanal();
}
}

Ventana

Componentes de una Ventana

1. Jpanel:

Componente con un layout manager propio, y que puede contener varios componentes en
su interior.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 4
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Entenderemos un JPanel como un contenedor en el cual podemos colocar y acomodar
elementos (dentro del panel) y así luego se nos facilitará mover todos esos componentes
relacionados de un lugar a otro solo moviendo el JPanel y no cada uno de los elementos
que este contiene.

Ejemplo:

package paquete;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class PanelPrincipal extends JFrame{


JPanel principal=new JPanel();
JPanel panel2=new JPanel();

PanelArriba arriba=new PanelArriba(this);

JButton rojo=new JButton("Rojo");


JButton azul=new JButton("Azul");

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));

BoxLayout horizontal=new BoxLayout(principal,BoxLayout.Y_AXIS);


principal.setLayout(horizontal);

principal.add(arriba);
principal.add(panel2);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 5
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
add(principal);

setVisible(true);

public static void main(String[]args){


PanelPrincipal p=new PanelPrincipal();

}
}
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:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 6
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JButton:

Componente que permite implementar un Botón de pulsación.

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:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 7
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
ackage 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);
}

public void actionPerformed(ActionEvent e) {


if (e.getSource()==boton1) {
System.exit(0);
}
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,450,350);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 8
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Ventana:

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:

public static void main(String args[])

JFrame f= new JFrame("Label Example");

JLabel l1,l2;

l1=new JLabel("First Label.");

l1.setBounds(50,50, 100,30);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 9
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
l2=new JLabel("Second Label.");

l2.setBounds(50,100, 100,30);

f.add(l1); f.add(l2);

f.setSize(300,300);

f.setLayout(null);

f.setVisible(true);
}
}

Ventana:

JTextField:

Componente que permite ingresar una línea de texto y editarlo.


Un JTextField o campo de texto es un componente java de la clase swing que crea un input
utilizado para la captura de datos.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 10
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Ejemplo:

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:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 11
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JTextArea:

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);
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,540,400);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

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);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 12
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
add(textfield1);
textarea1=new JTextArea();
textarea1.setBounds(10,50,400,300);
add(textarea1);
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,540,400);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Ventana:

JCheckBox:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 13
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Permite seleccionar o deseleccionar uno o varios ítems de un conjunto de opciones. El
control JCheckBox permite implementar un cuadro de selección (básicamente un botón de
dos estados)

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);
}

public void stateChanged(ChangeEvent e){


String cad="";
if (check1.isSelected()) cad = cad + "Inglés-";
if (check2.isSelected()) {
cad=cad+"Francés-";
}
if (check3.isSelected()) {
cad=cad+"Alemán-";
}
setTitle(cad);
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 14
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
formulario1.setBounds(0,0,300,200);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

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);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 15
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
ButtonGroup bg = new ButtonGroup();
radio1=new JRadioButton("640*480");
radio1.setBounds(10,20,100,30);
radio1.addChangeListener(this);
add(radio1);
bg.add(radio1);
radio2=new JRadioButton("800*600");
radio2.setBounds(10,70,100,30);
radio2.addChangeListener(this);
add(radio2);
bg.add(radio2);
radio3=new JRadioButton("1024*768");
radio3.setBounds(10,120,100,30);
radio3.addChangeListener(this);
add(radio3);
bg.add(radio3);
}

public void stateChanged(ChangeEvent e) {


if (radio1.isSelected()) {
setSize(640,480);
}
if (radio2.isSelected()) {
setSize(800,600);
}
if (radio3.isSelected()) {
setSize(1024,768);
}
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,350,230);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Ventanas:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 16
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JComboBox:

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;

public class Formulario extends JFrame implements ItemListener{


private final JComboBox<String> combo1;
public Formulario() {

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 17
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
setLayout(null);
combo1= new JComboBox<>();
combo1.setBounds(10,10,80,20);
combo1.addItem("rojo");
combo1.addItem("vede");
combo1.addItem("azul");
combo1.addItem("amarillo");
combo1.addItem("negro");
combo1.addItemListener(this);
}

public void itemStateChanged(ItemEvent e) {


if (e.getSource()==combo1) {
String seleccionado=(String)combo1.getSelectedItem();
setTitle(seleccionado);
}
}

public static void main(String[] ar) {


Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,200,150);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Ventana:

JList:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 18
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Permite implementar una lista con varias opciones de las cuales se puede seleccionar una
o varias. Este componente nos permite presentar una lista de selección donde podemos
escoger uno o varios elementos...... este tipo de selección ya la habíamos visto mediante
el uso del componente Atómico JComboBox, pero en ese para ver todos los elementos
teníamos que desplegar el combo y solo podemos seleccionar de a una opción....

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());

//Creación del panel, que contendra JList


JPanel panel = new JPanel();
panel.setLayout(null);

//creación de los elememtos que componen la lista


String[] nombres = {"Ana","Margarita","Daniela","Divian",
"Leslie","Paz","Andrea","Macarena"};
//creación del objeto lista
JList<String> lista = new JList<>(nombres);
//se cambia la orientación de presentación y el ajuste

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);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 19
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
}
}

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;

// El Modelo de la Tabla es el que controla todos los


// datos que se colocan en ella
class ModeloDatos extends AbstractTableModel {
Object[][] datos = {
{"uno","dos","tres","cuatro"},

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 20
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
{"cinco","seis","siete","ocho"},
{"nueve","diez","once","doce"},
};

// Esta clase imprime los datos en la consola cada vez


// que se produce un cambio en cualquiera de las
// casillas de la tabla
class TablaListener implements TableModelListener {
public void tableChanged( TableModelEvent evt ) {
for (Object[] dato : datos) {
for (int j = 0; j < datos[0].length; j++)
System.out.print(dato[j] + " ");
System.out.println();
}
}
}
// Constructor
ModeloDatos() {
addTableModelListener( new TablaListener() );
}
// Devuelve el número de columnas de la tabla
public int getColumnCount() {
return( datos[0].length );
}
// Devuelve el número de filas de la tabla
public int getRowCount() {
return( datos.length );
}
// Devuelve el valor de una determinada casilla de la tabla
// identificada mediante fila y columna
public Object getValueAt( int fila,int col ) {
return( datos[fila][col] );
}
// Cambia el valor que contiene una determinada casilla de
// la tabla
public void setValueAt( Object valor,int fila,int col ) {
datos[fila][col] = valor;
// Indica que se ha cambiado
fireTableDataChanged();
}
// Indica si la casilla identificada por fila y columna es
// editable
public boolean isCellEditable( int fila,int col ) {
return( true );
}
}

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 21
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
class java1416 extends JPanel {
public java1416() {
setLayout( new BorderLayout() );
JTable tabla = new JTable( new ModeloDatos() );
// La tabla se añade a un ScrollPane para que sea éste el
// que controle automáticamente en tamaño de la tabla,
// presentando una barra de desplazamiento cuando sea
// necesario
JScrollPane panel = new JScrollPane( tabla );
add( panel,BorderLayout.CENTER );
}

public static void main(String[] args) {


JFrame frame = new JFrame( "Tutorial de Java, Swing" );
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
System.exit( 0 );
}
} );
frame.getContentPane().add( new java1416(),BorderLayout.CENTER );
frame.setSize( 200,200 );
frame.setVisible( true );
}

Ventana:

Propiedades de los Componentes

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 22
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
BackGround: Permite modificar el color de fondo de un componente.

ForeGround: Propiedad para modificar el color de la letra de un componente.

Font: Permite modificar la fuente, el estilo y el tamaño de la letra de un componente.

Icon: Propiedad que permite insertar un icono o imagen en un componente.

Text: Para definir la línea de texto que se va a visualizar en el componente.

Cursor: Define el estilo del cursor del Mouse.

ToolTipText: Permite ingresar un mensaje de ayuda que se visualizará cuando pasemos


el mouse sobre el componente.

Enable: Permite habilitar o deshabilitar un componente.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 23
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JScrollPane

Para ponerle barras de scroll a un componente grande, usamos el JScrollPane. El


componente puede meterse o bien en el contructor, o bien con el método
setViewportView(). Es incorrecto añadirlo con el add(), ya que no funciona.

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.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 24
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
*
* @author Chuidiang
*
*/
public class EjemploScrollPaneTextArea {

private static final int NUMERO_COLUMNAS = 80;


private static final int NUMERO_FILAS = 25;

public static void main(String[] args) {


new EjemploScrollPaneTextArea();
}

/** Crea y visualiza la ventana de ejemplo */


public EjemploScrollPaneTextArea() {
JFrame ventana = new JFrame("Ejemplo de JTextArea en
JScrollPane");
JTextArea textArea = new JTextArea(NUMERO_FILAS,
NUMERO_COLUMNAS);
JScrollPane scrollPane = new JScrollPane(textArea);

ventana.getContentPane().add(scrollPane);
ventana.pack();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ventana.setVisible(true);
}
}

Ventana:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 25
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JPasswordField

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());

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 26
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
add(jpfContrasenia());
inicializador();
}

// Inicializador de la Ventana
private void inicializador() {
setSize(400, 200);
setLayout(null);
setTitle("Login");
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

// Texto que indica donde va el nombre de Usuario


private JLabel ingresarUsuario() {
JLabel usuario = new JLabel("Nombre de Usuario: ");
usuario.setBounds(30, 30, 200, 20);
return usuario;
}

// Texto que indica donde va la contraña


private JLabel ingresarContrasenia() {
JLabel contrasenia = new JLabel("Contrasenia: ");
contrasenia.setBounds(30, 80, 200, 20);
return contrasenia;
}

// Espacio para ingresar el nombre de usuario


private JTextField jtaUsuario() {
JTextField usuario = new JTextField();
usuario.setBounds(200, 30, 150, 20);
usuario.setToolTipText("Ingrese Nombre de Usuario");
return usuario;
}

// Espacio para ingresar la contraseña


private JPasswordField jpfContrasenia() {
// Se inicializa el Objeto
JPasswordField contrasenia = new JPasswordField();
// Asignamos posición y tamaño
contrasenia.setBounds(200, 80, 150, 20);
// Colocamos un símbolo personalizado(opcional)
contrasenia.setEchoChar('-');
// Le asignamos un texto emergente cuando nos posamos encima del
objeto
contrasenia.setToolTipText("Ingrese Contraseña");

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 27
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
return contrasenia;
}

public static void main(String[] args) {


new Password();
}

Ventana:

JFormattedTextField

El JFormattedTextField es un componente java un paso más evolucionado que


un JTextField normalito. El JTextField permite al usuario meter texto. Cuando desde
nuestro código le pedimos el contenido, nos devuelve el texto introducido por el usuario
como String. Cuando desde código le decimos lo que queremos que muestre, debemos
pasarle un String. El JTextField, además, no hace ningún tipo de comprobación sobre el
texto.

El JFormattedTextField da un paso más allá. Aunque el usuario mete un texto,


el JFormattedTextField lo convierte a la clase que nosotros queramos
(un Integer, Float, Date o incluso una clase nuestra propia). Cuando queramos pasarle
algo, le podemos pasar directamente cualquiera de estas clases y él se encarga de la
conversión a texto para mostrar.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 28
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Ejemplo:

package paquete;

import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;

public class Main {

public static void main(String[] args) throws ParseException {


MaskFormatter formatter = new MaskFormatter("(###) ###-####");
JFormattedTextField textField = new
JFormattedTextField(formatter);
JOptionPane.showMessageDialog(null, textField);
}

Ventana:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 29
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JEditorPane:

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.

El tipo de texto normalito "text/plain" es el de defecto, así que si no indicamos nada, es el


que se usará.

Si queremos construir otros formatos, debemos heredar de javax.swing.text.EditorKit y


construirnos una clase definiendo todos los métodos abstractos. Sin embargo eso es mucho
para este tutorial, así que simplemente saber que existe esa posibilidad.

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;

public class Principal extends JApplet {

JEditorPane editor;

public void init(){

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);
}

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 30
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JTextPane:

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.

Sin embargo, estos componentes JEditorPane y JTextPane no tienen métodos para ir


añadiendo poco a poco el texto. Simplemente tienen un método setText() al que se pasa
todo el texto de golpe. Para poder trabajar con el JTextPane, debemos pedirle
el Document asociado con getDocument() y trabajar con él, que sí tiene métodos para ir
añadiendo texto poco a poco.

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()
{

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 31
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
try
{
// Creación de la ventana de ejemplo
JFrame v = new JFrame("JTextPane");
JTextPane editor = new JTextPane();
JScrollPane scroll = new JScrollPane(editor);
v.getContentPane().add(scroll);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

// Atributos para cada uno de las frases.


SimpleAttributeSet attrs = new SimpleAttributeSet();

// 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);

// Ponemos el cursor al final del texto

editor.setCaretPosition(editor.getStyledDocument().getLength());

// Un icono
ImageIcon icono = new ImageIcon("d:/viejo.gif");
editor.insertIcon(icono);
insertaNuevaLinea(editor);

// Ponemos el cursor al final del texto

editor.setCaretPosition(editor.getStyledDocument().getLength());

// insertamos un JButton
JButton boton = new JButton("Pulsame");
editor.insertComponent(boton);

// Visualizamos la ventana.
v.pack();

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 32
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
v.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}

/**
* 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:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 33
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
.

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.

Primero instanciamos nuestro modelo de datos, el DefaultTreeModel y la parte visual,


el JTree. Metemos el primero dentro del segundo.

La clase DefaultTreeModel necesita en su constructor el nodo raíz del árbol, es decir, el


dato que hace de padre de todos los demás, el de más alto nivel. Por ello, debemos
instanciar este primer dato para poder construir el DefaultTreeModel.

Ese primer dato será un DefaultMutableTreeNode. A este DefaultMutableTreeNode


podemos pasarle el dato que queramos bien a través del método que comentamos
setUserObject(), bien a través del constructor. Nuestro dato será un simple String que diga
"abuelo" y lo meteremos en el constructor.

Ejemplo:

package ejemplo;

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 34
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
import javax.swing.tree.DefaultTreeModel;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

// Esta clase coge un array de Strings, haciendo que el primer elemento


// del array sea un nodo y el resto sean ramas de ese nodo
// Con ello se consiguen las ramas del árbol general cuando se pulsa
// el botón de test
class Rama {
DefaultMutableTreeNode r;
public Rama(String[] datos) {
r = new DefaultMutableTreeNode( datos[0] );
for( int i=1; i < datos.length; i++ )
r.add( new DefaultMutableTreeNode( datos[i] ) );
}

public DefaultMutableTreeNode node() {


return( r );
}
}

class java1414 extends JPanel {


String[][] datos = {
{ "Colores","Rojo","Verde","Azul" },
{ "Sabores","Salado","Dulce","Amargo" },
{ "Longitud","Corta","Media","Larga" },
{ "Intensidad","Alta","Media","Baja" },
{ "Temperatura","Alta","Media","Baja" },
{ "Volumen","Alto","Medio","Bajo" },
};
static int i=0;
DefaultMutableTreeNode raiz,rama,seleccion;
JTree arbol;
DefaultTreeModel modelo;

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();

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 35
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
// Y se añade el botón que va a ir incorporando ramas
// cada vez que se pulse
JButton botonPrueba = new JButton( "Pulsame" );
botonPrueba.addActionListener(evt -> {
if( i < datos.length ) {
rama = new Rama( datos[i++] ).node();
// Control de la útlima selección realizada
seleccion = (DefaultMutableTreeNode)
arbol.getLastSelectedPathComponent();
if( seleccion == null )
seleccion = raiz;
// El modelo creará el evento adecuado, y en respuesta
// a él, el árbol se actualizará automáticamente
modelo.insertNodeInto( rama,seleccion,0 );
}
});

// Cambio del color del botón


botonPrueba.setBackground( Color.blue );
botonPrueba.setForeground( Color.white );
// Se crea un panel para contener al botón
JPanel panel = new JPanel();
panel.add( botonPrueba );
add( panel,BorderLayout.SOUTH );
}

public static void main(String[] args) {


JFrame frame = new JFrame( "Tutorial de Java, Swing" );
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
System.exit( 0 );
}
});
frame.getContentPane().add( new java1414(),BorderLayout.CENTER );
frame.setSize( 200,500 );
frame.setVisible( true );
}
}

Ventana:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 36
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JScrollPane:

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

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 37
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
siempre la barra vertical. Hay un método similar para la horizontal.El "truco" del JScrollPane
consiste en llamar al método setViewPortview (Component), en vez de al método add().

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 {

private static final int NUMERO_COLUMNAS = 80;


private static final int NUMERO_FILAS = 25;

public static void main(String[] args) {


new EjemploScrollPaneTextArea();
}

/** Crea y visualiza la ventana de ejemplo */


public EjemploScrollPaneTextArea() {
JFrame ventana = new JFrame("Ejemplo de JTextArea en
JScrollPane");
JTextArea textArea = new JTextArea(NUMERO_FILAS,
NUMERO_COLUMNAS);
JScrollPane scrollPane = new JScrollPane(textArea);

ventana.getContentPane().add(scrollPane);
ventana.pack();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ventana.setVisible(true);
}
}

Ventana:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 38
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JTabbedPane:

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.*;

public class Principal extends JApplet {

public void init() {


JTabbedPane pestaña = new JTabbedPane();
JPanel p1 = new JPanel();
JLabel l1 = new JLabel("Este es el panel uno");
p1.add(l1);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 39
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JPanel p2 = new JPanel();
JLabel l2 = new JLabel("Este es el panel dos");
p2.add(l2);
JPanel p3 = new JPanel();
JLabel l3 = new JLabel("Este es el panel tres");
p3.add(l3);
pestaña.addTab("Pestaña Uno", p1);
pestaña.addTab("Pestaña Dos", p2);
pestaña.addTab("Pestaña Tres", p3);
add(pestaña);
}
}

Ventana Ejemplo:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 40
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JSpinner

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.

El siguiente es un código de ejemplo de uso de JSpinner. Se muestra una ventana con un


JSpinner y un JTextField. Al JSpinner se le añade un addChangeListener() de forma que
nos enteramos de los cambios de valor en dicho componente. En ese listener nos
encargamos de meter en el JTextField el nuevo valor del JSpinner. El resultado es que
según cambiamos valores en el JSpinner, van apareciendo en nuestro JTextField.

Ejemplo:

package ejemplo;

// Java Program to create a horizontal JSplitPane


// to separate two text areas

import javax.swing.*;

class solve extends JFrame {

// 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();

// create text areas


t1 = new JTextArea(10, 10);
t2 = new JTextArea(10, 10);

// set texts

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 41
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
t1.setText("this is first text area");
t2.setText("this is second text area");

// add text area to panel


p1.add(t1);
p.add(t2);

// create a splitpane
JSplitPane sl = new JSplitPane(JSplitPane.VERTICAL_SPLIT, p1, p);

// add panel
f.add(sl);

// set the size of frame


f.setSize(300, 300);

f.show();
}
}

Ventana:

JSlider:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 42
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JSlider es parte del paquete Java Swing. JSlider es una implementación de slider. El
componente permite al usuario seleccionar un valor deslizando la perilla dentro del valor
acotado. El control deslizante puede mostrar las marcas de graduación principales y también
las marcas de graduación menores entre dos marcas de graduación principales. La perilla se
puede colocar solo en esos puntos.

Ejemplo:

package ejemplo;

// java Program to create a simple JSlider


import javax.swing.event.*;
import java.awt.*;
import javax.swing.*;
class solve extends JFrame {

// 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();

// add slider to panel


p.add(b);

f.add(p);

// set the size of frame


f.setSize(300, 300);

f.show();

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 43
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
}
}

Ventana:

JSeparator:

JSeparator de clase pública

extiende JComponent

implementa SwingConstants , Accesible

JSeparatorproporciona un componente de propósito general para implementar líneas


divisorias, más comúnmente utilizado como un divisor entre elementos del menú que los
divide en agrupaciones lógicas. En lugar de usarlo JSeparatordirectamente, puede usar el
método JMenuo JPopupMenu addSeparatorpara crear y agregar un separador.
JSeparators también se pueden usar en cualquier otro lugar de una GUI donde sea útil un
divisor visual.

Ejemplo:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 44
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
package ejemplo;

// java Program to create a vertical separator


import java.awt.*;
import javax.swing.*;
class seperator extends JFrame
{
// constructor for the class
seperator()
{
}

// 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();

// set layout as vertical


s.setOrientation(SwingConstants.VERTICAL);

p.add(l);
p.add(s);
p.add(l1);

// set layout
p.setLayout(new GridLayout(1,0));

f.add(p);

// show the frame


f.setSize(400,400);
f.show();
}
}

Ventana:

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 45
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
JProgressBar

JProgressBar es parte del paquete Java Swing. JProgressBar muestra visualmente el


progreso de alguna tarea especificada. JProgressBar muestra el porcentaje de finalización
de la tarea especificada. La barra de progreso se llena cuando la tarea llega a su
finalización. Además de mostrar el porcentaje de finalización de la tarea, también puede
mostrar algo de texto.

Ejemplo:

package ejemplo;

// Java program to create a


// vertical progress bar
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 46
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
public class progress extends JFrame {

// create a frame
static JFrame f;

static JProgressBar b;

public static void main()


{

// create a frame
f = new JFrame("ProgressBar demo");

// create a panel
JPanel p = new JPanel();

// create a progressbar
b = new JProgressBar(SwingConstants.VERTICAL);

// set initial value


b.setValue(0);

b.setStringPainted(true);

// add progressbar
p.add(b);

// add panel
f.add(p);

// set the size of the frame


f.setSize(500, 500);
f.setVisible(true);

fill();
}

// function to increase progress


public static void fill()
{
int i = 0;
try {
while (i <= 100) {
// fill the menu bar
b.setValue(i + 10);

// delay the thread


Thread.sleep(1000);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 47
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
i += 20;
}
}
catch (Exception e) {
}
}
}

Ventana:

JToolBar

Un JToolBar es la típica barra de botones que aparece en cualquier aplicación de escritorio.


El JToolBar de java permite que lo arrastremos con el ratón para colocarlo en otra parte de
la ventana de nuestra aplicación o incluso que quede flotando en una ventana propia.

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.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 48
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
El JToolBar es sencillo, sólo tenemos que hacerle un new y añadirle todos los botones que
queramos. El código correspondiente está en el método getToolBar() del ejemplo más
abajo. Este JToolBar vamos a meterlo de momento en el hueco superior del BorderLayout
(fíjate en la línea de ventanaPrincipal.getContentPane().add(toolBar,
BorderLayout.NORTH) y en concreto, el parámetro BorerLayout.NORTH, que es el que
indica que lo queremos en la parte superior.

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 class PruebaJToolBar {


public static void main(String[] args) {
new PruebaJToolBar();
}

public PruebaJToolBar() {
JFrame ventanaPrincipal = new JFrame("Prueba JToolBar");
JTextArea componentePrincipal = new JTextArea(25, 80);

JToolBar toolBar = getToolBar();

ventanaPrincipal.getContentPane().add(componentePrincipal);
ventanaPrincipal.getContentPane().add(toolBar,
BorderLayout.NORTH);
ventanaPrincipal.pack();
ventanaPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventanaPrincipal.setLocationRelativeTo(null);
ventanaPrincipal.setVisible(true);

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 49
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
}

private JToolBar getToolBar() {


JToolBar barraBotones = new JToolBar();
barraBotones.add(new JButton("1"));
barraBotones.add(new JButton("2"));
barraBotones.add(new JButton("3"));
barraBotones.add(new JButton("4"));
barraBotones.add(new JButton("5"));
return barraBotones;
}
}

Ventana:

JToolBar.Separator

La clase estática pública JToolBar.Separator


extiende JSeparator
Un separador específico de la barra de herramientas. Un objeto con dimensión, pero sin
contenido que se utiliza para dividir botones en una barra de herramientas en grupos.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 50
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
Ejemplo:

package ejemplo;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;

public class AddingJToolBarSepraratorJFrame {

public static void main(String[] a) {


JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JToolBar toolBar = new JToolBar("Still draggable");

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.

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 51
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
3. HSpacer (Atributo):

Valor: Pixeles

Indica el número de espacios en blanco que se deben insertar a la derecha e izquierda de


la imagen.

Ejemplo:

<img src="img/img_pantalla.jpg" width="131" height="155" align="middle"


border="0" vspace="3" hspace="3"alt="Pantalla">

VSpacer (Atributo):

Valor: Pixeles

Indica el número de espacios en blanco que se seben insertar por encima y debajo de la
imagen.

Ejemplo:

src="img/img_pantalla.jpg" width="66" height="78" align="middle"


border="1" vspace="3" hspace="3" alt="Pantalla">

4. Conclusión:

De esta investigación se podría concluir que estos componentes permiten que el


usuario pueda interactuar de una forma más sencilla con cualquier ventana, echa
por nosotros gracias a las capacidades aprendidas en esta investigación, es
interesante saber cómo trabaja cada uno de estos componentes, cada uno
programado con una función diferente lo cual no permite crear ventanas que no
solo sean entendible, sino que sean de una forma entretenida para el usuario.
Al momento de crear una ventana podemos generar códigos que permitan la
ejecución correcta de esta ventana , es algo muy interesante, ya sea utilizando un
Jslider que permite que el usuario interactúe con un valor deslizando la perilla

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 52
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
dentro del valor acotado en la venta de interfaz, todas estas metodologías hacen
que el usuario se sienta cómodo, es entretenido ver el funcionamiento de estos
componentes de Swing y como se relacionan entre ellos en un código que d como
resultado una ventana de múltiples opciones, como lo podemos hacer con el
componente JComboBOX el cual se implementa para crear una lista de varias
opciones, las cuales periten que el usuario tenga múltiples opciones al momento de
necesitar algo, gracias a la interfaz gráfica de Swing podemos profundizar más en
el mundo de la programación de una forma muy interesante.

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/

“Formando líderes para la construcción de un nuevo país en paz”


Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 53
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 54
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 www.unipamplona.edu.co

También podría gustarte