利用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());
  }
 }
}

到此这篇关于利用javaFX实现移动一个小球的示例代码的文章就介绍到这了,更多相关javaFX 移动小球内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何基于JavaFX开发桌面程序

    基于JavaFX开发桌面程序 注:我也是JAVA FX的初学者之一,自己在学习的时候踩了许多的坑,中文英文的资料查了不少,但是觉得FX技术和其他热门技术相比,教程还是太少了.这里就尽量做一点微小的贡献吧 使用环境 注:写这个只是为了说明我的环境,使用和我的不一样的环境在理解这篇教程的时候并没有什么问题,例如使用Windows平台.使用Oracle JDK(这样就不需要再单独安装FX组件了,可以不用MAVEN).使用Oracle的SceneBuilder.可能唯一一个比较影响体验的就是不使用IDE

  • JavaFX之TableView的使用详解

    TableView,算是一个很重要的控件,几乎随处可见,而且功能强大,数据展示效果良好.所以,在JavaFX中,我们自然而然也应该学习一下TableView的使用. 下面我们先看看TableView的效果图: 每一列都是一个TableColumn,我们可以直接创建也可以在JavaFX Scene Builder中创建好. TableView的数据填充,需要一个ObservableList.其中需要一个类来做数据填充. 下面看看我们数据填充的类: 复制代码 代码如下: import javafx.

  • JavaFX 监听窗口关闭事件实例详解

    1.写在前面 在JavaFX的程序开发的时候,在使用多线程的时候,默认情况下在程序退出的时候,新开的线程依然在后台运行. 在这种情况下,可以监听窗口关闭事件,在里面关闭子线程. 2.具体实现的样例 package sample; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import java

  • 基于socket和javaFX简单文件传输工具

    本文实例介绍了基于socket和javaFX简单文件传输工具,分享给大家供大家参考,具体内容如下 package application; import java.io.File; import org.james.component.ButtonBox; import org.james.component.FileReceiverGrid; import org.james.component.FileSenderGrid; import javafx.application.Applica

  • JavaFX Application应用实例

    下面代码演示的是JavaFX进程命令行参数的实例.大家可以参阅一下. import java.util.List; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.SepiaTone; import javafx.scene.image.Imag

  • javafx实现图片3D翻转效果方法实例

    实现步骤: 1.定义FlipView对象.包含以下属性: 复制代码 代码如下: //正面视图 public Node frontNode; //反面视图 public Node backNode; //是否翻转 boolean flipped = false; //翻转角度 DoubleProperty time = new SimpleDoubleProperty(Math.PI / 2); //正面翻转特效 PerspectiveTransform frontEffect = new Per

  • Javafx简单实现【我的电脑资源管理器】效果

    本文实例讲述了Javafx简单实现[我的电脑资源管理器]效果.分享给大家供大家参考.具体如下: 1. java代码: package ttt; import java.io.File; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXColle

  • eclipse/IDEA配置javafx项目步骤(图文教程)

    在配置javafx之前,需要到Oracle或openJFX的官网下载javafx压缩包并解压,解压路径最好和Java的jdk放在同一目录方便寻找,在下载解压javafx包之后,开始配置javafx项目: 一:eclipse如何配置javafx 1.安装e(fx)clipse 在安装e(fx)clipse之前eclipse是没有创建javafx项目这一选项的 新建项目选择其它(CTRL + N),在选项卡里面并没有javafx项目选项 这时需要我们安装e(fx)clipse插件:在eclipse菜

  • JavaFx UI控件与代码间的绑定方法

    JavaFx初探一,UI控件的使用,具体内容如下 方式一:使用纯代码直接new view控件,这样就不涉及到与fxml文件之间的交互了 方式二:使用fxml编写界面文件,用可视化工具scene builder 来构建交互界面. 分两种方式绑定控件,可以用Android的方法在java中直接调用类似findviewbyId的方法,先在xml文件中设置fxid,然后根据id去找这个控件,代码如下 @Override public void start(Stage primaryStage) thro

  • 利用javaFX实现移动一个小球的示例代码

    题目:编写一个程序,在面板上移动小球.应该定义一个面板类来显示小球,并提供向上下左右移动小球的方法.请进行边界检查以防止小球移动到视线之外. 问题:我写的程序可以运行但是无法显示小球的移动,如果将移动改为改变小球颜色则可以显示,检查许久也检查不到问题在哪,所以贴上来问问大佬们,问题出在哪里?应该如何改? 代码如下: public class MoveBall_3 extends Application{ private CirclePane circlePane = new CirclePane

  • 利用js实现前后台传送Json的示例代码

    无论使用什么框架都存在着从controller向Html页面或者jsp页面传递数据的问题,最常用的方式是传递Json字符串.以前对这块知识有些模糊,现在整理一下. [Jquery基本方法] 实现传值常用的是Jquery以及内部封装的ajax.首先看一下jquery的get()和post()语法.get()方法是从服务器获得数据,其主要参数就是获得后台请求地址,以及负责处理的回调函数: $.get(URL,callback); $("button").click(function(){

  • 原生JS利用transform实现banner的无限滚动示例代码

    功能 默认情况无限循环向右移动 点击数字切换到对应图片 点击左右切换可切换图片 原理 首先说下原理. 在布局上所有的图片都是重叠的,即只要保证Y方向对齐即可,当前可见的图z-index层级最高. 每隔3s中更换一张图片,使用setTimeout定时. 使用gIndex记录当前可视区域的展示的是哪张图片下标,每次更换,计算下一张图片的下标. 通过requestAnimationFrame实现一次图片切换的动画. 这种方法也可以做到整个页面始终只有2个img标签,而不必把所有的img节点全部创建出来

  • Python 利用OpenCV给照片换底色的示例代码

    OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法.相比于PIL库来说OpenCV更加强大, 可以做更多更复杂的应用,比如人脸识别等. 1. 读入并显示图片 im

  • C# 利用Selenium实现浏览器自动化操作的示例代码

    概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子,简述C# 利用Selenium进行浏览器的模拟操作,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 要实现本例的功能,除了要掌握Html ,JavaScript,CSS等基础知识,还涉及以下知识点: log4net:主要用于日志的记录和存储,本例采用log4net进行日志记录,便于过程跟踪

  • Java利用Redis实现高并发计数器的示例代码

    业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信.一个接口一分钟限制多少请求.一个接口一天限制调用多少次等等.使用Redis的Incr自增命令可以轻松实现以上需求.以一个接口一天限制调用次数为例: /** * 是否拒绝服务 * @return */ private boolean denialOfService(String userId){ long count=JedisUtil.setIncr(DateUtil.getDate()+"&"+user

  • java利用socket通信实现Modbus-RTU通信协议的示例代码

    Modbus Modbus是一种串行通信协议.Modbus 一个工业上常用的通讯协议.一种通讯约定.Modbus协议包括RTU.ASCII.TCP.其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现. 简单分析Modbus-RTU报文 37 03 10 3F 80 00 00 00 00 00 00 3F 80 00 00 40 40 00 00 24 dd(十六进制) 37:从站地址 ,03:功能码,10:读取的字节数,24 dd:crc校验码.其它就是传送的数据. 4G DTU(

  • 利用Qt实现可扩展对话框的示例代码

    目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 dialog.h头文件 4.2 dialog.cpp源文件 五.效果演示 可扩展对话框通常用于用户对界面有不同要求的场合.通常情况下,只出现在基本对话窗体:当供高级用户使用或需要更多信息时,可通过某种方式的切换显示完整对话窗体(扩展窗体).切换的工作通常由一个按钮完成. 一.项目介绍 实现一个简单填写资料的对话框.通常情况下,只需要填写姓名和性别.若有特殊需要,还需要填写更多信息时,则切换至完整对话窗体,完整对话窗体

  • 利用Java手写阻塞队列的示例代码

    目录 前言 需求分析 阻塞队列实现原理 线程阻塞和唤醒 数组循环使用 代码实现 成员变量定义 构造函数 put函数 offer函数 add函数 take函数 重写toString函数 完整代码 总结 前言 在我们平时编程的时候一个很重要的工具就是容器,在本篇文章当中主要给大家介绍阻塞队列的原理,并且在了解原理之后自己动手实现一个低配版的阻塞队列. 需求分析 在前面的两篇文章ArrayDeque(JDK双端队列)源码深度剖析和深入剖析(JDK)ArrayQueue源码当中我们仔细介绍了队列的原理,

  • C语言利用UDP实现群聊聊天室的示例代码

    目录 1.UDP群聊的功能 2.写项目的流程 3.流程图 4.代码实现 4.1头文件 4.2函数 4.3服务器 4.4客户端 1.UDP群聊的功能 有新用户登录,其他在线的用户可以收到登录信息 有用户群聊,其他在线的用户可以收到群聊信息 有用户退出,其他在线的用户可以收到退出信息 服务器可以发送系统信息 2.写项目的流程 画流程图 根据流程图写框架 一个功能一个功能实现 3.流程图 4.代码实现 4.1头文件 #ifndef __MYHEAD_H__ #define __MYHEAD_H__ #

随机推荐