Java语言程序设计基础篇_编程练习题**16.18(模拟:一个转动的风扇)

目录

题目:**16.18(模拟:一个转动的风扇)

习题思路

代码示例

 结果展示


题目:**16.18(模拟:一个转动的风扇)

   重写编程练习题15.28,增加一个滑动条控制风扇的速度,如图16-43c所示。

  • 习题思路
  • 就是在15.28的代码上新建一个HBox和一个Slider,然后为Slider注册事件监听器,当Slider中的值改变时将其值设置为RotateTransition的速率。

练习题15.28:Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)-CSDN博客 

  • 代码示例

编程练习题16_18ImitateFan.java 

package chapter_16;
 
import javafx.animation.RotateTransition;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
 
public class 编程练习题16_18ImitateFan extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		Pane pane = new Pane();
		BorderPane borderPane = new BorderPane(pane);
		Scene scene = new Scene(borderPane, 400, 420);
		borderPane.setMinWidth(400);
		borderPane.setMinHeight(420);
		pane.setPadding(new Insets(15, 15, 15, 15));
		pane.setMaxWidth(400);
		pane.setMinWidth(400);
		pane.setMaxHeight(400);
		pane.setMinHeight(400);
		
		
		double x = 200;
		double y = 200;
		
		Circle c = new Circle(x, y, 80);
		c.setStroke(Color.BLACK);
		c.setFill(Color.WHITE);
		pane.getChildren().add(c);
		
		int angle = 30;
		for(int i = 0;i < 4;i++) {
			Arc arc1 = new Arc(x, y, 70, 70, angle, 30);
			angle += 90;
			arc1.setFill(Color.BLUE);
			arc1.setType(ArcType.ROUND);
			pane.getChildren().add(arc1);
		}
		RotateTransition rt = new RotateTransition(
				Duration.millis(3000),pane);
		  rt.setByAngle(360);
		  rt.setCycleCount(Timeline.INDEFINITE);
		  rt.play();
		borderPane.setCenter(pane);
		
		HBox hBox = new HBox();
		hBox.setAlignment(Pos.CENTER);
		hBox.setSpacing(5);
		Button btPause = new Button("Pause");
		Button btResume = new Button("Resume");
		Button btReverse = new Button("Reverse");
		hBox.getChildren().addAll(btPause, btResume, btReverse);
		
		btPause.setOnMouseClicked(e -> rt.pause());
		btResume.setOnMouseClicked(e -> rt.play());
		btReverse.setOnMouseClicked(e -> rt.setRate(rt.getRate() * -1));// 通过将动画的速率乘以-1,可以实现反转动画的效果。
		borderPane.setTop(hBox);
		
		Slider slider = new Slider(1,100,1);
		slider.setPrefWidth(360);
		HBox hBox2 = new HBox(slider);
		hBox2.setAlignment(Pos.CENTER);
		
		slider.valueProperty().addListener(ov ->{
			rt.setRate(slider.getValue());
		});
		
		borderPane.setBottom(hBox2);
		primaryStage.setTitle("编程练习题16_18ImitateFan");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  •  结果展示

我想将frontend 也是用volumes,将其映射到/app/frontend目录,在/app/frontend下install以及build,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件 FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值