td2T p2
td2T p2
td2T p2
Modèle
Exercice 1:
Cet exemple permet d’afficher des messages sur la console en fonction du bouton cliqué.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
btOpen.setOnAction(new EventHandler<ActionEvent>() {
1
@Override // Override the handle method
public void handle(ActionEvent e) {
System.out.println("Process Open");
}
});
btSave.setOnAction(new EventHandler<ActionEvent>() {
@Override // Override the handle method
public void handle(ActionEvent e) {
System.out.println("Process Save");
}
});
btPrint.setOnAction(new EventHandler<ActionEvent>() {
@Override // Override the handle method
public void handle(ActionEvent e) {
System.out.println("Process Print");
}
});
Les Lambda expressions sont de nouveaux mécanismes en Java 8. Elles peuvent être
interprétées comme des méthodes anonymes avec une syntaxe plus concise (plus simple
et plus courte).
ou
2
Le type d’un paramètre peut être explicitement déclaré ou implicitement déduit par le
compilateur. On peut omettre les parenthèses en cas de paramètre unique sans type
explicite.
Les lamdba expressions peuvent être utilisées à condition que l’interface de l’écouteur ne
contienne qu’une seule méthode à implémenter (la méthode handle dans ce cas). Les
instructions à utiliser seront celles de cette méthode. Cette interface est connue par une
interface SAM (Single Abstract Method SAM interface).
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
btOpen.setOnAction((e) -> {
System.out.println("Process Open");
});
btSave.setOnAction(e -> {
System.out.println("Process Save");
});
3
Nous disposons d’un ensemble de méthodes pour manipuler les évènements de cette
classe :
Exercice 3 :
package TP3;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
4. La classe KeyEvent
Nous disposons d’un ensemble de méthodes pour manipuler les évènements de cette
classe :
4
Exercice 4 :
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
text.setOnKeyPressed(e -> {
switch (e.getCode()) {
case DOWN: text.setY(text.getY() + 10); break;
case UP: text.setY(text.getY() - 10); break;
case LEFT: text.setX(text.getX() - 10); break;
case RIGHT: text.setX(text.getX() + 10); break;
default:
if (e.getText().length() > 0)
text.setText(e.getText());
}
});
text.requestFocus(); // text is focused to receive key input
}
5
Exercice 5 : utilisation des classes : ActionEvent, MouseEvent et KeyEvent :
package TP3;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
6
primaryStage.setTitle("ControlCircle"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
circlePane.setOnMouseClicked(e -> {
if (e.getButton() == MouseButton.PRIMARY) {
circlePane.enlarge();
}
else if (e.getButton() == MouseButton.SECONDARY) {
circlePane.shrink();
}
});
scene.setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.UP) {
circlePane.enlarge();
}
else if (e.getCode() == KeyCode.DOWN) {
circlePane.shrink();
}
});
}
public CirclePane() {
getChildren().add(circle);
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
}