ここでは,「マウス」を操作することによって,処理が実行されるプログラムを作ってみましょう.
マウスを使用するプログラムを作るためには,マウスの操作によって生じる様々な種類のイベントを処理する必要があります.
マウスの操作によって発生するイベントには次のようなものがあります.
| イベント | 説明 |
|---|---|
| MOUSE_CLICKED | マウス・ボタンがクリックされたときに発生 |
| MOUSE_DRAGGED | マウスをドラッグしたときに発生 |
| MOUSE_ENTERED | マウスが領域に入ったときに発生 |
| MOUSE_EXITED | マウスが領域から出たときに発生 |
| MOUSE_MOVED | ボタンを押さずにマウスが移動したときに発生 |
| MOUSE_PRESSED | マウス・ボタンが押されたときに発生 |
| MOUSE_RELEASED | マウス・ボタンが放されたときに発生 |
マウスを使って絵を描くプログラムを作ってみましょう.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.input.MouseEvent;
public class FirstMouse extends Application{
public static void main(String[] args) {
launch(args);
}
double x1,x2,y1,y2;
Canvas canvas = new Canvas(600,600);
GraphicsContext gc = canvas.getGraphicsContext2D();
@Override
public void start(Stage stage) throws Exception {
stage.setTitle("Application FirstMouse");
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
root.setPadding(new Insets(10,10,10,10));
root.setSpacing(2.0);
gc.setLineWidth(1.0);
gc.setStroke(Color.BLACK);
canvas.setOnMousePressed(event -> paintInfo(event));
canvas.setOnMouseDragged(event -> paintInfo(event));
root.getChildren().addAll(canvas);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
private void paintInfo(MouseEvent event) {
if(event.getEventType()==MouseEvent.MOUSE_PRESSED) {
x2 = event.getX();
y2 = event.getY();
gc.moveTo(x2, y2);
}
if(event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
x1 = x2;
y1 = y2;
x2 = event.getX();
y2 = event.getY();
gc.strokeLine(x1, y1, x2, y2);
}
}
}
プログラムへの入力を,表示された選択肢から行うコントロールの一つがComboBoxです.
使用方法は,次のように ComboBoxを作成し,選択肢の登録をします.その後はイベント処理の部分を記述して入力を処理します.
ComboBox<String> combobox1 = new ComboBox<>(); //ComboBoxをcombobox1として作成
combobox1.getItems().addAll("BLACK","BLUE","GREEN","RED"); //選択肢を登録
combobox1.setValue("BLACK"); //最初の設定
選択した値は,getValue()で文字列として取得できます.
String s = combobox1.getValue();
ComboBoxを使用する場合は,次のimport文が必要です.
import javafx.scene.control.ComboBox;
以下のどれかのプログラムを作りなさい.