鼠标事件舞台上的圆圈阵列 导入javafx.animation.animation; 导入javafx.animation.KeyFrame; 导入javafx.animation.KeyValue; 导入javafx.animation.PauseTransitionBuilder; 导入javafx.animation.SequentialTransitionBuilder; 导入javafx.animation.Timeline; 导入javafx.animation.TranslateTransitionBuilder; 导入javafx.application.application; 导入静态javafx.application.application.launch; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.scene.Group; 导入javafx.scene.Node; 导入javafx.scene.scene; 导入javafx.scene.control.Button; 导入javafx.scene.input.MouseEvent; 导入javafx.scene.layout.StackPane; 导入javafx.scene.paint.Color; 导入javafx.scene.shape.Circle; 导入javafx.scene.shape.Rectangle; 导入javafx.stage.stage; 导入javafx.stage.StageStyle; 导入javafx.util.Duration; 公共类Temp4扩展了应用程序{ 私人动画; 公共静态void main(字符串[]args){ 发射(args); } @凌驾 公共作废开始(最终阶段初级阶段){ 最终组根=新组(); 场景=新场景(根); //使舞台透明 //initStyle(StageStyle.TRANSPARENT); 场景.设置填充(颜色.透明); //矩形rect=新矩形(0,0,300,300); //矩形设置填充(颜色为红色); //鼠标单击添加圆 scene.addEventHandler(MouseEvent.MOUSE_单击,新建EventHandler(){ 时间线=新时间线(); @凌驾 公共无效句柄(MouseEvent me){ Group listOfCircles=新组(); 对于(int i=0;i
我试图通过鼠标事件将圆圈放在我点击舞台的同一位置,Netbeans会永远运行,或者抛出异常鼠标事件舞台上的圆圈阵列 导入javafx.animation.animation; 导入javafx.animation.KeyFrame; 导入javafx.animation.KeyValue; 导入javafx.animation.PauseTransitionBuilder; 导入javafx.animation.SequentialTransitionBuilder; 导入javafx.animation.Timeline; 导入javafx.animation.TranslateTransitionBuilder; 导入javafx.application.application; 导入静态javafx.application.application.launch; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.scene.Group; 导入javafx.scene.Node; 导入javafx.scene.scene; 导入javafx.scene.control.Button; 导入javafx.scene.input.MouseEvent; 导入javafx.scene.layout.StackPane; 导入javafx.scene.paint.Color; 导入javafx.scene.shape.Circle; 导入javafx.scene.shape.Rectangle; 导入javafx.stage.stage; 导入javafx.stage.StageStyle; 导入javafx.util.Duration; 公共类Temp4扩展了应用程序{ 私人动画; 公共静态void main(字符串[]args){ 发射(args); } @凌驾 公共作废开始(最终阶段初级阶段){ 最终组根=新组(); 场景=新场景(根); //使舞台透明 //initStyle(StageStyle.TRANSPARENT); 场景.设置填充(颜色.透明); //矩形rect=新矩形(0,0,300,300); //矩形设置填充(颜色为红色); //鼠标单击添加圆 scene.addEventHandler(MouseEvent.MOUSE_单击,新建EventHandler(){ 时间线=新时间线(); @凌驾 公共无效句柄(MouseEvent me){ Group listOfCircles=新组(); 对于(int i=0;i,javafx,mouseevent,Javafx,Mouseevent,我试图通过鼠标事件将圆圈放在我点击舞台的同一位置,Netbeans会永远运行,或者抛出异常 我没有创建包类。我是javafx新手。如果包类是必需的???那么代码中有一些错误 单击鼠标时,您将创建一个包含五个圆的组(您称之为“listOfCircles”),但决不能将其作为场景的一部分。您需要以某种方式将其放入场景图中:调用 import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.anim
我没有创建包类。我是javafx新手。如果包类是必需的???那么代码中有一些错误 单击鼠标时,您将创建一个包含五个圆的组(您称之为“listOfCircles”),但决不能将其作为场景的一部分。您需要以某种方式将其放入场景图中:调用
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.PauseTransitionBuilder;
import javafx.animation.SequentialTransitionBuilder;
import javafx.animation.Timeline;
import javafx.animation.TranslateTransitionBuilder;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.util.Duration;
public class Temp4 extends Application {
private Animation animation;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) {
final Group root = new Group();
Scene scene = new Scene(root);
//Make stage transparent
//primaryStage.initStyle(StageStyle.TRANSPARENT);
scene.setFill(Color.TRANSPARENT);
//Rectangle rect = new Rectangle(0, 0, 300, 300);
//rect.setFill(Color.RED);
// Adding circles at Mouse Click
scene.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
Timeline timeline = new Timeline();
@Override
public void handle(MouseEvent me){
Group listOfCircles = new Group();
for(int i=0; i < 5; i++){
Circle circle = new Circle(50*Math.random());
Color c = new Color(Math.random(),Math.random(),Math.random(),1.0);
circle.setFill(c);
listOfCircles.getChildren().add(circle);
}
for (Node circle : listOfCircles.getChildren()){
timeline.getKeyFrames().addAll(
new KeyFrame(Duration.ZERO,
new KeyValue(circle.translateXProperty(),800),
new KeyValue(circle.translateYProperty(),500)
),
new KeyFrame(new Duration(2000),
new KeyValue(circle.translateXProperty(),me.getSceneX()+10),
new KeyValue(circle.translateYProperty(),me.getSceneY()+10)
));
}
timeline.play();
primaryStage.show();
}
});
//scene.addEventHandler(MouseEvent.MOUSE_RELEASED, new EventHandler<MouseEvent>() {
// public void handle(MouseEvent me2){
// scene.getChildren().clear();
// }
// });
//public double getSampleWidth() { return 400; }
// public double getSampleHeight() { return 150; }
//root.getChildren().add();
//primaryStage.setScene(new Scene(root, 300, 250));
//primaryStage.initStyle(StageStyle.TRANSPARENT);
//primaryStage.setScene(scene);
}
}
在开始之前,动画将正常工作
您还可以使用根节点(“根”)创建场景,但从未将场景放入窗口(JavaFX术语中的“stage”)或显示窗口。
取消对行的注释
root.getChildren().add(listOfCircles);
及
也许值得从更简单的东西开始:也许从开始,并在那里用代码进行实验,以了解每一行的作用。将类放入包中不是强制性的,但强烈建议这样做;对于像这样的应用程序,看起来您只是在试验,使用“默认包”是可以的。
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.setScene(scene);