JavaFX - Contrôles de l'interface utilisateur
Chaque interface utilisateur prend en compte les trois aspects principaux suivants -
UI elements- Ce sont les éléments visuels de base que l'utilisateur voit et interagit finalement. JavaFX fournit une énorme liste d'éléments largement utilisés et communs variant de basiques à complexes, que nous aborderons dans ce tutoriel.
Layouts- Ils définissent comment les éléments de l'interface utilisateur doivent être organisés à l'écran et donnent un aspect final à l'interface utilisateur graphique (GUI). Cette partie sera traitée dans le chapitre Mise en page.
Behavior- Ce sont des événements qui se produisent lorsque l'utilisateur interagit avec des éléments de l'interface utilisateur. Cette partie sera traitée dans le chapitre Gestion des événements.
JavaFX fournit plusieurs classes dans le package javafx.scene.control. Pour créer divers composants GUI (contrôles), JavaFX prend en charge plusieurs contrôles tels que le sélecteur de date, le champ de texte de bouton, etc.
Chaque contrôle est représenté par une classe; vous pouvez créer un contrôle en instanciant sa classe respective.
Voici la liste des contrôles couramment utilisés lorsque l'interface graphique est conçue à l'aide de JavaFX.
S. Non | Contrôle et description |
---|---|
1 | Label Un objet Label est un composant permettant de placer du texte. |
2 | Button Cette classe crée un bouton étiqueté. |
3 | ColorPicker Un ColorPicker fournit un volet de contrôles conçu pour permettre à un utilisateur de manipuler et de sélectionner une couleur. |
4 | CheckBox Un CheckBox est un composant graphique qui peut être dans un état activé (vrai) ou désactivé (faux). |
5 | RadioButton La classe RadioButton est un composant graphique, qui peut être dans un état ON (vrai) ou OFF (faux) dans un groupe. |
6 | ListView Un composant ListView présente à l'utilisateur une liste déroulante d'éléments de texte. |
sept | TextField Un objet TextField est un composant de texte qui permet l'édition d'une seule ligne de texte. |
8 | PasswordField Un objet PasswordField est un composant de texte spécialisé pour la saisie de mot de passe. |
9 | Scrollbar Un contrôle Scrollbar représente un composant de barre de défilement afin de permettre à l'utilisateur de sélectionner une plage de valeurs. |
dix | FileChooser Un contrôle FileChooser représente une fenêtre de dialogue dans laquelle l'utilisateur peut sélectionner un fichier. |
11 | ProgressBar Au fur et à mesure que la tâche progresse vers l'achèvement, la barre de progression affiche le pourcentage d'achèvement de la tâche. |
12 | Slider Un curseur permet à l'utilisateur de sélectionner graphiquement une valeur en faisant glisser un bouton dans un intervalle limité. |
Exemple
Le programme suivant est un exemple qui affiche une page de connexion dans JavaFX. Ici, nous utilisons les contrôleslabel, text field, password field et button.
Enregistrez ce code dans un fichier avec le nom LoginPage.java.
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class LoginPage extends Application {
@Override
public void start(Stage stage) {
//creating label email
Text text1 = new Text("Email");
//creating label password
Text text2 = new Text("Password");
//Creating Text Filed for email
TextField textField1 = new TextField();
//Creating Text Filed for password
PasswordField textField2 = new PasswordField();
//Creating Buttons
Button button1 = new Button("Submit");
Button button2 = new Button("Clear");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(400, 200);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(text1, 0, 0);
gridPane.add(textField1, 1, 0);
gridPane.add(text2, 0, 1);
gridPane.add(textField2, 1, 1);
gridPane.add(button1, 0, 2);
gridPane.add(button2, 1, 2);
//Styling nodes
button1.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
button2.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
text1.setStyle("-fx-font: normal bold 20px 'serif' ");
text2.setStyle("-fx-font: normal bold 20px 'serif' ");
gridPane.setStyle("-fx-background-color: BEIGE;");
//Creating a scene object
Scene scene = new Scene(gridPane);
//Setting title to the Stage
stage.setTitle("CSS Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.
javac LoginPage.java
java LoginPage
Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme indiqué ci-dessous.
Le programme suivant est un exemple de formulaire d'inscription, qui illustre les contrôles dans JavaFX tels que Date Picker, Radio Button, Toggle Button, Check Box, List View, Choice List, etc.
Enregistrez ce code dans un fichier avec le nom Registration.java.
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.ToggleButton;
import javafx.stage.Stage;
public class Registration extends Application {
@Override
public void start(Stage stage) {
//Label for name
Text nameLabel = new Text("Name");
//Text field for name
TextField nameText = new TextField();
//Label for date of birth
Text dobLabel = new Text("Date of birth");
//date picker to choose date
DatePicker datePicker = new DatePicker();
//Label for gender
Text genderLabel = new Text("gender");
//Toggle group of radio buttons
ToggleGroup groupGender = new ToggleGroup();
RadioButton maleRadio = new RadioButton("male");
maleRadio.setToggleGroup(groupGender);
RadioButton femaleRadio = new RadioButton("female");
femaleRadio.setToggleGroup(groupGender);
//Label for reservation
Text reservationLabel = new Text("Reservation");
//Toggle button for reservation
ToggleButton Reservation = new ToggleButton();
ToggleButton yes = new ToggleButton("Yes");
ToggleButton no = new ToggleButton("No");
ToggleGroup groupReservation = new ToggleGroup();
yes.setToggleGroup(groupReservation);
no.setToggleGroup(groupReservation);
//Label for technologies known
Text technologiesLabel = new Text("Technologies Known");
//check box for education
CheckBox javaCheckBox = new CheckBox("Java");
javaCheckBox.setIndeterminate(false);
//check box for education
CheckBox dotnetCheckBox = new CheckBox("DotNet");
javaCheckBox.setIndeterminate(false);
//Label for education
Text educationLabel = new Text("Educational qualification");
//list View for educational qualification
ObservableList<String> names = FXCollections.observableArrayList(
"Engineering", "MCA", "MBA", "Graduation", "MTECH", "Mphil", "Phd");
ListView<String> educationListView = new ListView<String>(names);
//Label for location
Text locationLabel = new Text("location");
//Choice box for location
ChoiceBox locationchoiceBox = new ChoiceBox();
locationchoiceBox.getItems().addAll
("Hyderabad", "Chennai", "Delhi", "Mumbai", "Vishakhapatnam");
//Label for register
Button buttonRegister = new Button("Register");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(500, 500);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(nameLabel, 0, 0);
gridPane.add(nameText, 1, 0);
gridPane.add(dobLabel, 0, 1);
gridPane.add(datePicker, 1, 1);
gridPane.add(genderLabel, 0, 2);
gridPane.add(maleRadio, 1, 2);
gridPane.add(femaleRadio, 2, 2);
gridPane.add(reservationLabel, 0, 3);
gridPane.add(yes, 1, 3);
gridPane.add(no, 2, 3);
gridPane.add(technologiesLabel, 0, 4);
gridPane.add(javaCheckBox, 1, 4);
gridPane.add(dotnetCheckBox, 2, 4);
gridPane.add(educationLabel, 0, 5);
gridPane.add(educationListView, 1, 5);
gridPane.add(locationLabel, 0, 6);
gridPane.add(locationchoiceBox, 1, 6);
gridPane.add(buttonRegister, 2, 8);
//Styling nodes
buttonRegister.setStyle(
"-fx-background-color: darkslateblue; -fx-textfill: white;");
nameLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
dobLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
genderLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
reservationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
technologiesLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
educationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
locationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
//Setting the back ground color
gridPane.setStyle("-fx-background-color: BEIGE;");
//Creating a scene object
Scene scene = new Scene(gridPane);
//Setting title to the Stage
stage.setTitle("Registration Form");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.
javac Registration.java
java Registration
Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme indiqué ci-dessous.