利用javaFX实现移动一个小球的示例代码
作者:韦又又V 发布时间:2022-06-18 19:04:51
标签:javaFX,移动,小球
题目:编写一个程序,在面板上移动小球。应该定义一个面板类来显示小球,并提供向上下左右移动小球的方法。请进行边界检查以防止小球移动到视线之外。
问题:我写的程序可以运行但是无法显示小球的移动,如果将移动改为改变小球颜色则可以显示,检查许久也检查不到问题在哪,所以贴上来问问大佬们,问题出在哪里?应该如何改?
代码如下:
public class MoveBall_3 extends Application{
private CirclePane circlePane = new CirclePane(250,250);
public static void main(String[] args) {
Application.launch(args);
}
public void start(Stage primaryStage) throws Exception {
Button bt1 = new Button("Left");
Button bt2 = new Button("Right");
Button bt3 = new Button("Up");
Button bt4 = new Button("Down");
bt1.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
circlePane.moveLeft();
}
});
bt2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
circlePane.moveRight();
}
});
bt3.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
circlePane.moveUp();
}
});
bt4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
circlePane.moveDown();
}
});
FlowPane pane2 = new FlowPane();
pane2.getChildren().addAll(bt1,bt2,bt3,bt4);
circlePane.getChildren().addAll(pane2);
Scene scene = new Scene(circlePane,500,500);
primaryStage.setTitle("MoveBall");
primaryStage.setScene(scene);
primaryStage.show();
}
}
class CirclePane extends StackPane{
private Circle circle = new Circle(250,250,50);
public CirclePane() {
getChildren().add(circle);
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
}
public CirclePane(double a,double b) {
getChildren().add(circle);
circle.setCenterX(a);
circle.setCenterY(b);
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
}
public void moveLeft() {
if(circle.getCenterX()-50-15 >= 0) {
circle.setCenterX(circle.getCenterX()-15);
circle.setCenterY(circle.getCenterY());
}
else {
circle.setCenterX(50);
circle.setCenterY(circle.getCenterY());
}
}
public void moveRight() {
if(circle.getCenterX()+50+15 <= 500) {
circle.setCenterX(circle.getCenterX()+15);
circle.setCenterY(circle.getCenterY());
}
else {
circle.setCenterX(450);
circle.setCenterY(circle.getCenterY());
}
}
public void moveUp() {
if(circle.getCenterY()-50-15 >= 0) {
circle.setCenterY(circle.getCenterY()-15);
circle.setCenterX(circle.getCenterX());
}
else {
circle.setCenterY(50);
circle.setCenterX(circle.getCenterX());
}
}
public void moveDown() {
if(circle.getCenterY()+50+15 <= 500) {
circle.setCenterY(circle.getCenterY()+15);
circle.setCenterX(circle.getCenterX());
}
else {
circle.setCenterY(450);
circle.setCenterX(circle.getCenterX());
}
}
}
来源:https://blog.csdn.net/weixin_43461540/article/details/85631033


猜你喜欢
- 前言缓存技术被认为是减轻服务器负载、降低网络拥塞、增强Web可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral
- 在说ClassCastException之前,先介绍下引用类型转换;引用类型转换分为向上转型和向下转型两种; 向上转型:多态本身是
- 本文实例为大家分享了Android实现滚动日期选择器的具体代码,供大家参考,具体内容如下wheelview滚动效果的View这段时间需要用到
- Java Benchmark 基准测试的实例详解import java.util.Arrays; import java.util.conc
- 什么是二叉堆二叉堆就是完全二叉树,或者是靠近完全二叉树结构的二叉树。在二叉树建树时采取前序建树就是建立的完全二叉树。也就是二叉堆。所以二叉堆
- 最近项目中使用springboot+jwt实现登录权限控制,所以在这里记录一下防止以后忘记,毕竟好记性不如烂笔头嘛~。首先我们需要导入使用到
- 最近在做Android 应用开发,IDE是android studio , 使用的版本配置如下:compileSdk 32bui
- 用Canvas画贝塞尔曲线,要画贝塞尔曲线首先了解贝塞尔曲线:由于用计算机画图大部分时间是操作鼠标来掌握线条的路径,与手绘的感觉和效果有很大
- 找了很久查询objectid的方法都是错的,用mongovue能查询出来,但就是用java不知道怎么查询1.mongovue里的查询方式:{
- 引言之前介绍过Spring Boot Validation的使用及扩展本文在此基础上重点讲解下Spring Boot Validation如
- 简述最近做的公司项目,图片比较多,不想给其存储到自己服务器上,就买了阿里云的OSS服务器来哦进行存储,其实集成第三方平台,一般没什么难度,当
- 一、ThreadPool概述提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。创建线程需
- 本文实例讲述了Android双击返回键退出程序的实现方法,是Android程序开发中一个非常实用的功能,分享给大家供大家参考之用。具体方法如
- 在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍一、使用sizeof()运算符在C语言中,sizeof() 是长度的运算符,括号中
- 前言最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选择功能强大的freemarker+固定格
- Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的
- 在Android上,不止一个途径来侦听用户和应用程序之间交互的事件。对于用户界面里的事件,侦听方法就是从与用户交互的特定视图对象截获这些事件
- 方法一、若创建Activity时继承的是 Activity:第一种:常用的一种方法:requestWindowFeature(Wi
- 为哪些方法代理?实现自己 * ,首先需要关注的点就是,代理对象需要为哪些方法代理? 原生JDK的 * 的实现是往上抽象出一层接口,让目标
- 先来看看效果:测试一:原图:效果图:测试二:原图:效果图:代码部分:/** * */ package com.b510; import ja