2014-03-27 29 views
0

package javafxapplication36;鼠标单击时将物体放在舞台上

/** 
* Copyright (c) 2008, 2012 Oracle and/or its affiliates. 
* All rights reserved. Use is subject to license terms. 
*/ 
import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.animation.KeyFrame; 
import javafx.animation.KeyValue; 
import javafx.animation.Timeline; 
import javafx.beans.InvalidationListener; 
import javafx.beans.Observable; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.geometry.VPos; 
import javafx.scene.Group; 
import javafx.scene.Node; 
import javafx.scene.control.Button; 
import javafx.scene.effect.DropShadow; 
import javafx.scene.effect.Lighting; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.scene.shape.Rectangle; 
import javafx.scene.text.Text; 
import javafx.scene.text.TextAlignment; 
import javafx.util.Duration; 

/** 
* A sample that demonstrates how to add or remove a change listener on a node 
* (for example, a Rectangle node) for some property (for example, 
* Rectangle.hover). Once you add a listener, the text field shows the hover 
* property change. 
* 
* @see javafx.beans.value.ChangeListener 
* @see javafx.beans.InvalidationListener 
* @see javafx.beans.value.ObservableValue 
*/ 
public class ChangeListenerSample extends Application { 

    public static void main(String[] args) { 
    launch(args); 
} 

    private void init(Stage primaryStage) { 
     final Group root = new Group(); 
     primaryStage.setResizable(false); 
     Scene scene = new Scene(root, 400,80); 
     primaryStage.setScene(scene); 

     //rect.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() 
     scene.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { 
     @Override public void handle(MouseEvent event) { 
       Circle circle = new Circle(event.getSceneX(), event.getSceneY(),30); 
       circle.setFill(Color.YELLOW); 
       root.getChildren().add(circle); 
     } 
    }); 
    //root.getChildren().add(circle); 
    primaryStage.setScene(new Scene(root, 300, 250)); 
    primaryStage.show(); 
} 
} 

我想在按下鼠标时在舞台上放一个圆,我无法做到这一点。我试图在开始时设置根目录,但它并没有发生。 帮助感谢!

回答

1

我对你的代码做了一些编辑,它看​​起来很完美!

注意:您不需要在场景中重新设置根目录,因为您已经在开始时就已经做了根!

同样可以将场景设置到舞台上!

import javafx.application.Application; 
import javafx.event.EventHandler; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.stage.Stage; 

/** 
* A sample that demonstrates how to add or remove a change listener on a node 
* (for example, a Rectangle node) for some property (for example, 
* Rectangle.hover). Once you add a listener, the text field shows the hover 
* property change. 
* 
* @see javafx.beans.value.ChangeListener 
* @see javafx.beans.InvalidationListener 
* @see javafx.beans.value.ObservableValue 
*/ 
public class ChangeListenerSample extends Application { 

    public static void main(String[] args) { 
    launch(args); 
} 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     final Group root = new Group(); 
     primaryStage.setResizable(false); 
     Scene scene = new Scene(root, 400,80); 
     primaryStage.setScene(scene); 

     //rect.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() 
     scene.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { 
     @Override public void handle(MouseEvent event) { 
       Circle circle = new Circle(event.getSceneX(), event.getSceneY(),30); 
       circle.setFill(Color.YELLOW); 
       root.getChildren().add(circle); 
     } 
     }); 
     //root.getChildren().add(circle); 
     primaryStage.show(); 

    } 
} 
相关问题