Ecco degli esercizi con soluzione per praticare l’uso di JavaFX in Java.
Esercizio 1: Creazione di una Finestra Semplice
Creare una finestra JavaFX semplice con un titolo e dimensioni specifiche.
import javafx.application.Application;import javafx.stage.Stage;
public class FinestraSemplice extends Application { @Override public void start(Stage primaryStage) { primaryStage.setTitle("Finestra Semplice"); primaryStage.setWidth(400); primaryStage.setHeight(300); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 2: Aggiunta di un Bottone
Aggiungere un bottone a una finestra JavaFX e gestire l'evento di clic sul bottone.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.StackPane;import javafx.stage.Stage;
public class BottoneEsempio extends Application { @Override public void start(Stage primaryStage) { Button btn = new Button("Clicca Me"); btn.setOnAction(e -> System.out.println("Bottone cliccato!"));
StackPane root = new StackPane(); root.getChildren().add(btn);
Scene scene = new Scene(root, 400, 300); primaryStage.setTitle("Bottone Esempio"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 3: Layout con VBox
Utilizzare un layout VBox per posizionare più elementi verticalmente.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.VBox;import javafx.stage.Stage;
public class LayoutVBox extends Application { @Override public void start(Stage primaryStage) { VBox vbox = new VBox();
Button btn1 = new Button("Bottone 1"); Button btn2 = new Button("Bottone 2"); Button btn3 = new Button("Bottone 3");
vbox.getChildren().addAll(btn1, btn2, btn3);
Scene scene = new Scene(vbox, 400, 300); primaryStage.setTitle("Layout VBox"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 4: Layout con HBox
Utilizzare un layout HBox per posizionare più elementi orizzontalmente.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.HBox;import javafx.stage.Stage;
public class LayoutHBox extends Application { @Override public void start(Stage primaryStage) { HBox hbox = new HBox();
Button btn1 = new Button("Bottone 1"); Button btn2 = new Button("Bottone 2"); Button btn3 = new Button("Bottone 3");
hbox.getChildren().addAll(btn1, btn2, btn3);
Scene scene = new Scene(hbox, 400, 300); primaryStage.setTitle("Layout HBox"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 5: TextField e Label
Aggiungere una TextField e una Label a una finestra JavaFX e visualizzare il testo inserito nella Label quando si preme un bottone.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.Label;import javafx.scene.control.TextField;import javafx.scene.layout.VBox;import javafx.stage.Stage;
public class TextFieldLabel extends Application { @Override public void start(Stage primaryStage) { TextField textField = new TextField(); Label label = new Label(); Button btn = new Button("Mostra Testo");
btn.setOnAction(e -> label.setText(textField.getText()));
VBox vbox = new VBox(textField, btn, label);
Scene scene = new Scene(vbox, 400, 300); primaryStage.setTitle("TextField e Label"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 6: Utilizzo di una ListView
Creare una ListView e aggiungere degli elementi ad essa.
import javafx.application.Application;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import javafx.scene.Scene;import javafx.scene.control.ListView;import javafx.scene.layout.VBox;import javafx.stage.Stage;
public class ListViewEsempio extends Application { @Override public void start(Stage primaryStage) { ObservableList<String> items = FXCollections.observableArrayList( "Elemento 1", "Elemento 2", "Elemento 3");
ListView<String> listView = new ListView<>(items);
VBox vbox = new VBox(listView);
Scene scene = new Scene(vbox, 400, 300); primaryStage.setTitle("ListView Esempio"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 7: ComboBox
Creare una ComboBox e gestire l'evento di selezione di un elemento.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.ComboBox;import javafx.scene.control.Label;import javafx.scene.layout.VBox;import javafx.stage.Stage;
public class ComboBoxEsempio extends Application { @Override public void start(Stage primaryStage) { ComboBox<String> comboBox = new ComboBox<>(); comboBox.getItems().addAll("Opzione 1", "Opzione 2", "Opzione 3"); Label label = new Label();
comboBox.setOnAction(e -> label.setText("Selezionato: " + comboBox.getValue()));
VBox vbox = new VBox(comboBox, label);
Scene scene = new Scene(vbox, 400, 300); primaryStage.setTitle("ComboBox Esempio"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}
Esercizio 8: TabPane
Creare una finestra JavaFX con un TabPane contenente due tab.
import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Tab;import javafx.scene.control.TabPane;import javafx.scene.layout.VBox;import javafx.stage.Stage;
public class TabPaneEsempio extends Application { @Override public void start(Stage primaryStage) { TabPane tabPane = new TabPane();
Tab tab1 = new Tab("Tab 1"); tab1.setContent(new VBox(new Label("Contenuto del Tab 1"))); tabPane.getTabs().add(tab1);
Tab tab2 = new Tab("Tab 2"); tab2.setContent(new VBox(new Label("Contenuto del Tab 2"))); tabPane.getTabs().add(tab2);
VBox vbox = new VBox(tabPane);
Scene scene = new Scene(vbox, 400, 300); primaryStage.setTitle("TabPane Esempio"); primaryStage.setScene(scene); primaryStage.show(); }
public static void main(String[] args) { launch(args); }}