我开始学习 JavaFX。我制作了一个创建形状的简单程序。
我想做基本的事件驱动执行方法,比如:
- 如果光标位于形状内,则打印光标的坐标
- 每次光标进入形状时更改颜色,然后在超出形状时将其更改回原始颜色
以下是我所做的
import javafx.application.Application;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Polygon;
public class ColouredShapes extends Application {
@Override
public void start(Stage stage) {
int radius = 40;
int strokeWidth = 3;
Color strokeColor = Color.BROWN;
Circle circle1 = new Circle(250, 125, radius, Color.RED);
circle1.setStroke(strokeColor);
circle1.setStrokeWidth(strokeWidth);
Rectangle square = new Rectangle(375, 85, 80, 80);
square.setFill(Color.BLUE);
square.setStroke(strokeColor);
square.setStrokeWidth(strokeWidth);
Polygon polygon = new Polygon();
polygon.getPoints().addAll(new Double[]{
50.0, 85.0,
110.0, 60.0, 125.0, 175.0});
polygon.setFill(Color.YELLOWGREEN);
Group root = new Group();
root.getChildren().addAll(circle1, square, polygon);
Scene scene = new Scene(root, 500, 250, Color.LIGHTYELLOW);
stage.setScene(scene);
stage.show();
}
public static void maint(String[] args){
launch(args);
}
}
最佳答案
向形状添加鼠标进入、退出和移动事件处理程序
square.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
System.out.println(event.getScreenX());
System.out.println(event.getScreenY());
}
});
square.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
square.setFill(Color.GREEN);
}
});
square.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
square.setFill(null);
}
});
关于java - 光标的坐标位置和颜色在一定条件下变化 - JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060914/