Código Lista de tareas
Requisitos do completado

public class UD02T03_ListadoTareas extends Application {
private final ObservableList<Text> tareas = FXCollections.observableArrayList();
@Override
public void start(Stage stage) {
// Campo de texto y botón "Agregar"
TextField txtTarea = new TextField();
txtTarea.setPromptText("Escribe una tarea...");
txtTarea.setStyle(
"-fx-background-radius: 10;"
+ "-fx-border-radius: 10;"
+ "-fx-border-color: #00A896;"
+ "-fx-padding: 4 8 4 8;"
);
txtTarea.prefWidth(200);
Button btnAgregar = new Button("Agregar");
btnAgregar.setStyle(
"-fx-background-color: #00A896;"
+ "-fx-text-fill: white;"
+ "-fx-font-weight: bold;"
+ "-fx-background-radius: 10;"
+ "-fx-padding: 6 14 6 14;"
+ "-fx-cursor: hand;"
);
HBox superior = new HBox(10, txtTarea, btnAgregar);
superior.setAlignment(Pos.CENTER_LEFT);
// ListView de tareas
ListView<Text> listaTareas = new ListView<>(tareas);
listaTareas.setPrefHeight(250);
listaTareas.setStyle(
"-fx-background-color: #FFFFFF;"
+ "-fx-border-color: #00A896;"
+ "-fx-border-radius: 10;"
+ "-fx-background-radius: 10;"
);
// Botones inferiores: Eliminar, Terminada, Limpiar
Button btnEliminar = new Button("Eliminar");
btnEliminar.setStyle(
"-fx-background-color: #F94144;"
+ "-fx-text-fill: white;"
+ "-fx-background-radius: 10;"
+ "-fx-padding: 6 14 6 14;"
+ "-fx-cursor: hand;"
);
Button btnTerminada = new Button("Terminada");
btnTerminada.setStyle(
"-fx-background-color: #F9C74F;"
+ "-fx-text-fill: #333333;"
+ "-fx-background-radius: 10;"
+ "-fx-padding: 6 14 6 14;"
+ "-fx-cursor: hand;"
+ "-fx-font-weight: bold;"
);
Button btnLimpiar = new Button("Limpiar");
btnLimpiar.setStyle(
"-fx-background-color: #577590;"
+ "-fx-text-fill: white;"
+ "-fx-background-radius: 10;"
+ "-fx-padding: 6 14 6 14;"
+ "-fx-cursor: hand;"
);
HBox botonesInferiores = new HBox(10, btnEliminar, btnTerminada, btnLimpiar);
botonesInferiores.setAlignment(Pos.CENTER);
// Contenedor principal
VBox root = new VBox(15, superior, listaTareas, botonesInferiores);
root.setPadding(new Insets(20));
root.setStyle(
"-fx-background-color: #C2F9ED;"
+ "-fx-background-radius: 0;"
);
// La acción del botón se ejecuta cada vez que se pulsa.
//Esto puede deberse a que el usuario haga clic en el botón con el ratón,
//a un evento táctil, a la pulsación de una tecla
//o a que el desarrollador invoque el método `fire()` mediante programación.
btnAgregar.setOnAction(e -> {
String texto = txtTarea.getText().trim();
if (!texto.isEmpty()) {
Text tarea = new Text(texto);
tarea.setFont(Font.font("Comic Sans MS", 11));
tarea.setStyle(
"-fx-text-fill: #000000;"
+ "-fx-strikethrough: false;"
+ "-fx-padding: 4 8 4 8;"
);
tareas.add(tarea);
txtTarea.clear();
}
});
//setOnAction() con un TextField se ejecuta cuando el usuario pulsa la tecla Intro.
//fire() "ejecuta" mediante programación un evento sobre el objeto indicado.
txtTarea.setOnAction(e -> btnAgregar.fire());
/**Ejemplo con setOnKeyPressed()
/*txtTarea.setOnKeyPressed(eh -> {
if(eh.getCode().equals(KeyCode.ENTER)){
btnAgregar.fire();
}
});*/
btnEliminar.setOnAction(e -> {
Integer indice = listaTareas.getSelectionModel().getSelectedIndex();
if (indice >= 0) {
tareas.remove((int) indice);
}
listaTareas.getSelectionModel().clearSelection();
});
btnTerminada.setOnAction(e -> {
Integer indice = listaTareas.getSelectionModel().getSelectedIndex();
if (indice >= 0) {
Text tarea = tareas.get(indice);
tarea.setStyle(tarea.getStyle().replace("-fx-strikethrough: false;", "-fx-strikethrough: true;"));
//tarea.setStyle(tarea.getStyle().concat("-fx-strikethrough: true;"));
listaTareas.getSelectionModel().clearSelection();
}
});
btnLimpiar.setOnAction(e -> tareas.clear());
Scene scene = new Scene(root, 500, 400);
stage.setTitle("Listado de Tareas");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
Última modificación: domingo, 23 de novembro de 2025, 6:48 PM