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.
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:
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.
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.
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:
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.
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)
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)
).