让版本2中的风扇转起来。创建一个FanControl类包含以下内容:Start、Stop、Reverse按钮,用于开启、关闭、反转控制;一个滚动条控制速度。运行示例如下:
时间: 2024-03-29 19:41:05 浏览: 175
好的,根据您的要求,我已经创建了一个 FanControl 类,以下是代码实现:
```java
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.util.Duration;
public class FanControl extends BorderPane {
private Fan fan;
private Timeline animation;
public FanControl() {
fan = new Fan();
setCenter(fan);
HBox hBox = new HBox();
hBox.setPadding(new Insets(10, 10, 10, 10));
hBox.setSpacing(10);
Button btStart = new Button("Start");
Button btStop = new Button("Stop");
Button btReverse = new Button("Reverse");
ScrollBar sbSpeed = new ScrollBar();
hBox.getChildren().addAll(btStart, btStop, btReverse, sbSpeed);
setBottom(hBox);
animation = new Timeline(
new KeyFrame(Duration.millis(50), e -> fan.setRotate(fan.getRotate() + 1))
);
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
btStart.setOnAction(e -> animation.play());
btStop.setOnAction(e -> animation.pause());
btReverse.setOnAction(e -> animation.setRate(animation.getRate() * -1));
sbSpeed.valueProperty().addListener(e -> animation.setRate(sbSpeed.getValue() / 10));
}
}
```
这个类继承了 BorderPane 类,包含了一个 Fan 对象、三个按钮和一个滚动条。在构造函数中,我们创建了一个 Timeline 对象,用于实现风扇的旋转动画,同时设置了 CycleCount 为 INDEFINITE,表示动画会一直执行。然后将风扇添加到 BorderPane 的中心,将按钮和滚动条添加到底部。
在按钮的事件处理程序中,我们通过调用 animation 的 play、pause 和 setRate 方法实现了开启、关闭、反转控制。在滚动条的事件处理程序中,我们通过设置 animation 的 rate 属性实现了速度控制。
您可以在程序中创建 FanControl 对象,并将其添加到场景中,如下所示:
```java
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FanControl fanControl = new FanControl();
primaryStage.setScene(new Scene(fanControl, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
运行程序后,您可以通过按钮和滚动条控制风扇的旋转,如下图所示:
![FanControl Example](https://img-blog.csdnimg.cn/20211103144749178.gif)
阅读全文