Skip to content

3 Componentes

Introducción

La clase Component es una clase abstracta que representa a los componentes, es decir, a cada uno de los elementos de nuestro diseño UI. Todos los componentes tienen características comunes, como por ejemplo, la posición, un tamaño, que puede ser pintado y que puede provocar eventos.

De entre los componentes, podemos destacar:

  • Button
  • Canvas
  • Checkbox
  • Choice
  • Container
  • Label
  • List
  • Scrollbar
  • TextComponent

Veremos en detalle, a cada uno de ellos.

Métodos comunes

Todos los componentes citados anteriormente tienen métodos comunes que realizan las mismas operaciones:

Método Descripción
void setBound(int x,int y, int width, int height) Posiciona el componente horizontalmente (x) y verticalmente (y), y además define el tamaño de ancho y alto
Rectangle getBounds() Obtiene los límites del componente (posición y tamaños)
void setLocation(int x, int y) Posiciona el elemento horizontalmente (x) y verticalmente (y)
Point getLocation() Obtiene la posición del componente
void setSize(int width, int height) Establece el tamaño del componente
Dimension getSize() Obtiene el tamaño del componente
void setVisible(boolean enabled) Muestra el componente si enabled está a true y lo oculta si está a false
boolean isEnabled() Comprueba si el componente es visible o no

Etiquetas

Las etiquetas (label) proporcionan una forma de color texto estático para mostrar información que no varía al usuario. La clase Label se encarga de este tipo de componentes.

Label

Figura 3 - Label

public class Labels {

    public void show(){
        Frame frame = new Frame("Labels");

        Label label = new Label("My first label");
        frame.add(label);

        frame.setSize(200, 200);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Labels().show();
    }

}

Botones

Los botones son componentes que permiten pulsación sobre ellos por parte del usuario. La clase Button es la que se encarga de estos tipos de componentes:

Button

Figura 4 - Button

public class Buttons {

    public void show(){
        Frame frame = new Frame("Labels");

        Button button = new Button("My first button");
        frame.add(button);

        frame.setSize(200, 200);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Buttons().show();
    }
}

Selector

El selector es componente que contiene una lista de elementos de la cual el usuario podrá seleccionar uno. La clase Choice es la encargada de trabajar con este tipo de componente. Además tiene un método addItem que se utiliza para añadir elementos a la lista.

Choice

Figura 5 - Choice

public class Choices {
    public void show() {
        Frame frame = new Frame();
        Choice choice = new Choice();

        choice.addItem("Element 1");
        choice.addItem("Element 2");
        choice.addItem("Element 3");
        choice.addItem("Element 4");

        choice.setSize(300,100);
        frame.add(choice);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Choices().show();
    }
}

Checkbox

Los checkbox son elementos que permite marcar y desmarcar. Suelen ser usados para información de tipo true o false. La clase Checkbox es la encarga de estos componentes.

Se le puede indicar un estado con el método setState(boolean b), para que aparezca marcado o desmarcado.

Checkbox

Figura 6 - Checkbox

public class Checkboxes {

    public void show() {
        Frame frame = new Frame();
        Checkbox component = new Checkbox("Choose me");

        frame.add(component);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Checkboxes().show();
    }
}

RadioButtons

Los RadioButtons son similares a los checkboxes con la diferencia de que suele haber más de uno y además solo puede ser seleccionado más de uno. La clase Checkbox también se encarga de ellos.

Se puede usar como segundo parámetro de la clase Checkbox el grupo al cual pertenece, o por el contrario, usar el método `setCheckbox

La clase CheckboxGroup agrupa varios checkboxes para permitir que solo se seleccione uno:

Radio

Figura 7 - Radio

public class RadioButtons {
    public void show() {
        Frame frame = new Frame();
        Checkbox component1 = new Checkbox("Opción 1");
        Checkbox component2 = new Checkbox("Opción 2");
        Checkbox component3 = new Checkbox("Opción 3");

        component1.setSize(40, 20);
        component2.setSize(40, 20);
        component3.setSize(40, 20);

        CheckboxGroup group = new CheckboxGroup();

        component1.setCheckboxGroup(group);
        component2.setCheckboxGroup(group);
        component3.setCheckboxGroup(group);

        frame.add(component1);
        frame.add(component2);
        frame.add(component3);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new RadioButtons().show();
    }
}

Selección Múltiple

Las lista de selección múltiples son listas que permiten seleccionar más de una opción. La clase List del paquete AWT son las encargadas de este tipo de componente. El constructor de la clase List recibe dos parámetros, uno con el número de elementos a mostrar (si se muestran menos de los que hay, se hará scroll) y otro booleano que permite seleccionar más de un elementos a la vez.

Además, también dispone del método addItem(element) para añadir elementos a la lista.

List

Figura 8 - List

public class Lists {
    public void show() {
        Frame frame = new Frame();
        List list  = new List(2, true);

        list.add("Opción 1");
        list.add("Opción 2");
        list.add("Opción 3");

        frame.add(list);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Lists().show();
    }
}

Campos de texto

Los campos de textos son componentes que permite al usuario escribir en él. La clase TextField es la encarga de estos componentes y permite crearlos:

  • Vacíos. TextField()
  • Vacíos con una longitud determinada. TextField(int length)
  • Relleno con texto predefinido. TextField(String text)
  • Relleno con texto predefinido y longitud determinada. TextField(String text, int length)

TextField

Figura 9 - TextField

public class TextFields {
    public void show() {
        Frame frame = new Frame();
        TextField field1 = new TextField();
        TextField field2 = new TextField(20);
        TextField field3 = new TextField("Hola");
        TextField field4 = new TextField("Hola", 20);

        frame.add(field1);
        frame.add(field2);
        frame.add(field3);
        frame.add(field4);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new TextFields().show();
    }
}

Para obtener el texto escrito, se puede usar el método getText().

Este tipo de componente tiene el método setEditable(boolean b) para indicar si un elemento se puede editar o no.

Áreas de texto

Las áreas de texto permiten incorporar texto multilínea. La clase TextArea se encarga de dicho componente.

Este componente puede crearse vacío (TextArea()), o con el número de filas y columnas permitidas (TextArea(int rows, int columns)), con el texto (TextArea(String text)), o con todo (TextArea(String text, int rows, int columns)).

TextArea

Figura 10 - TextArea

public class TextAreas {
    public void show() {
        Frame frame = new Frame();
        TextArea textArea = new TextArea(200, 200);

        frame.add(textArea);

        frame.setSize(500,500);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new TextAreas().show();
    }
}