Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

setOnKeyPressed ??

MyKel D.May 8 2014 — edited May 9 2014

the object:

package evelynsgemz;

/*

* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.

* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

*

* This code is free software; you can redistribute it and/or modify it

* under the terms of the GNU General Public License version 2 only, as

* published by the Free Software Foundation.  Oracle designates this

* particular file as subject to the "Classpath" exception as provided

* by Oracle in the LICENSE file that accompanied this code.

*

* This code is distributed in the hope that it will be useful, but WITHOUT

* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License

* version 2 for more details (a copy is included in the LICENSE file that

* accompanied this code).

*

* You should have received a copy of the GNU General Public License version

* 2 along with this work; if not, write to the Free Software Foundation,

* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

*

* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA

* or visit www.oracle.com if you need additional information or have any

* questions.

*/

import javafx.event.EventHandler;

import javafx.scene.Group;

import javafx.scene.Node;

import javafx.scene.PerspectiveCamera;

import javafx.scene.SceneAntialiasing;

import javafx.scene.SubScene;

import javafx.scene.image.Image;

import javafx.scene.input.KeyEvent;

import javafx.scene.input.MouseEvent;

import javafx.scene.input.ScrollEvent;

import javafx.scene.paint.Color;

import javafx.scene.paint.PhongMaterial;

import javafx.scene.shape.Box;

import javafx.scene.shape.Sphere;

import javafx.scene.transform.Rotate;

import javafx.stage.Stage;

/**

*

* @author Mykel D

*/

public class View3D extends GEMz {

    public View3D(Stage ThreeDStage) {

        super(ThreeDStage);

        System.setProperty("prism.dirtyopts", "false");

        setFullscreen(ThreeDStage);

        cameraXform.getChildren().add(cameraXform2);

        cameraXform2.getChildren().add(cameraXform3);

        cameraXform3.getChildren().add(theCamera);

        cameraXform3.setRotateZ(180.0);

        theCamera.setNearClip(0.1);

        theCamera.setFarClip(10000.0);

        theCamera.setTranslateZ(-cameraDistance);

        cameraXform.ry.setAngle(320.0);

        cameraXform.rx.setAngle(40);

        final PhongMaterial redMaterial = new PhongMaterial();

        redMaterial.setSpecularColor(Color.ORANGE);

        redMaterial.setDiffuseColor(Color.RED);

        final PhongMaterial gridMaterial = new PhongMaterial();

        gridMaterial.setSpecularColor(Color.ORANGE);

        gridMaterial.setDiffuseColor(Color.RED);

        final PhongMaterial floorMaterial = new PhongMaterial();

        floorMaterial.setSpecularColor(Color.AQUA);

        floorMaterial.setDiffuseColor(Color.AQUAMARINE);

        Image floorImage;

        floorImage = new Image(View3D.class.getResourceAsStream("Images/PlanetSkin1.jpg"));

        floorMaterial.setDiffuseMap(floorImage);

        floorMaterial.setSelfIlluminationMap(floorImage);

        floorMaterial.setBumpMap(floorImage);

        final PhongMaterial blueMaterial = new PhongMaterial();

        blueMaterial.setDiffuseColor(Color.BLUE);

        blueMaterial.setSpecularColor(Color.LIGHTBLUE);

        Image sphereImage;

        sphereImage = new Image(View3D.class.getResourceAsStream("Images/GreenMarble.jpg"));

        final Sphere redMain = new Sphere(2);

        redMain.setMaterial(blueMaterial);

        redMain.setTranslateX(0);

        redMain.setTranslateY(0);

        redMain.setTranslateZ(0);

        final Sphere blue = new Sphere(5);

        blue.setMaterial(redMaterial);

        blue.setTranslateX(10);

        blue.setTranslateY(5);

        blue.setTranslateZ(0);

        final Box Floor = new Box(500, .5, 500);

        Floor.setMaterial(floorMaterial);

        Floor.setTranslateX(0);

        Floor.setTranslateY(0);

        Floor.setTranslateZ(0);

        theTings.getChildren().addAll(Floor, redMain, blue);

        theTings.setRotationAxis(Rotate.Y_AXIS);

        theTings.setFocusTraversable(true);

        tingsMovement.getChildren().add(theTings);

        for (int x = 0; x < 30; x += 10) {

            for (int y = 0; y < 30; y += 5) {

                for (int z = 0; z < 30; z += 10) {

                    final Sphere theString = new Sphere(.5);

                    theString.setMaterial(gridMaterial);

                    theTings.getChildren().add(theString);

                    theString.setTranslateX(x);

                    theString.setTranslateY(y);

                    theString.setTranslateZ(z);

                }

            }

        }

        tingsMovement.setOnMousePressed((MouseEvent event) -> {

            mousePosX = event.getSceneX();

            mousePosY = event.getSceneY();

            mouseOldX = event.getSceneX();

            mouseOldY = event.getSceneY();

        });

        tingsMovement.setOnMouseDragged((MouseEvent event) -> {

            mouseOldX = mousePosX;

            mouseOldY = mousePosY;

            mousePosX = event.getSceneX();

            mousePosY = event.getSceneY();

            mouseDeltaX = (mousePosX - mouseOldX);

            mouseDeltaY = (mousePosY - mouseOldY);

            double modifier = 1.0;

            double modifierFactor = 0.1;

           

            if (event.isSecondaryButtonDown()) {

                cameraXform.ry.setAngle(cameraXform.ry.getAngle() - mouseDeltaX * modifierFactor * modifier * 13.0);  // +

                cameraXform.rx.setAngle(cameraXform.rx.getAngle() + mouseDeltaY * modifierFactor * modifier * 13.0);  // -

            } else if (event.isPrimaryButtonDown()) {

                double z = theCamera.getTranslateZ();

                double newZ = z + mouseDeltaX * modifierFactor * modifier * 4;

                theCamera.setTranslateZ(newZ);

            } else if (event.isMiddleButtonDown()) {

                cameraXform2.t.setX(cameraXform2.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);  // -

                cameraXform2.t.setY(cameraXform2.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);  // -

            }

        });

//////////////////////////////

        tingsMovement.setOnKeyPressed((KeyEvent event) -> {

            switch (event.getCode()) {

                case Z:

                    if (event.isShiftDown()) {

                        cameraXform.ry.setAngle(0.0);

                        cameraXform.rx.setAngle(0.0);

                        theCamera.setTranslateZ(-300.0);

                    }

                    cameraXform2.t.setX(0.0);

                    cameraXform2.t.setY(0.0);

                    break;

                case X:

                    break;

                case S:

                    if (event.isControlDown()) {

                        if (theTings.isVisible()) {

                            theTings.setVisible(false);

                        } else {

                            theTings.setVisible(true);

                        }

                    }

                    break;

                case SPACE:

                    break;

                case UP:

                    if (event.isControlDown() && event.isShiftDown()) {

                        cameraXform2.t.setY(cameraXform2.t.getY() - 10.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown() && event.isShiftDown()) {

                        cameraXform.rx.setAngle(cameraXform.rx.getAngle() - 10.0 * ALT_MULTIPLIER);

                    } else if (event.isControlDown()) {

                        cameraXform2.t.setY(cameraXform2.t.getY() - 1.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown()) {

                        cameraXform.rx.setAngle(cameraXform.rx.getAngle() - 2.0 * ALT_MULTIPLIER);

                    } else if (event.isShiftDown()) {

                        double z = theCamera.getTranslateZ();

                        double newZ = z + 5.0 * SHIFT_MULTIPLIER;

                        theCamera.setTranslateZ(newZ);

                    }

                    break;

                case DOWN:

                    if (event.isControlDown() && event.isShiftDown()) {

                        cameraXform2.t.setY(cameraXform2.t.getY() + 10.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown() && event.isShiftDown()) {

                        cameraXform.rx.setAngle(cameraXform.rx.getAngle() + 10.0 * ALT_MULTIPLIER);

                    } else if (event.isControlDown()) {

                        cameraXform2.t.setY(cameraXform2.t.getY() + 1.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown()) {

                        cameraXform.rx.setAngle(cameraXform.rx.getAngle() + 2.0 * ALT_MULTIPLIER);

                    } else if (event.isShiftDown()) {

                        double z = theCamera.getTranslateZ();

                        double newZ = z - 5.0 * SHIFT_MULTIPLIER;

                        theCamera.setTranslateZ(newZ);

                    }

                    break;

                case RIGHT:

                    if (event.isControlDown() && event.isShiftDown()) {

                        cameraXform2.t.setX(cameraXform2.t.getX() + 10.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown() && event.isShiftDown()) {

                        cameraXform.ry.setAngle(cameraXform.ry.getAngle() - 10.0 * ALT_MULTIPLIER);

                    } else if (event.isControlDown()) {

                        cameraXform2.t.setX(cameraXform2.t.getX() + 1.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown()) {

                        cameraXform.ry.setAngle(cameraXform.ry.getAngle() - 2.0 * ALT_MULTIPLIER);

                    }

                    break;

                case LEFT:

                    if (event.isControlDown() && event.isShiftDown()) {

                        cameraXform2.t.setX(cameraXform2.t.getX() - 10.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown() && event.isShiftDown()) {

                        cameraXform.ry.setAngle(cameraXform.ry.getAngle() + 10.0 * ALT_MULTIPLIER);  // -

                    } else if (event.isControlDown()) {

                        cameraXform2.t.setX(cameraXform2.t.getX() - 1.0 * CONTROL_MULTIPLIER);

                    } else if (event.isAltDown()) {

                        cameraXform.ry.setAngle(cameraXform.ry.getAngle() + 2.0 * ALT_MULTIPLIER);  // -

                    }

                    break;

            }

        });

////////////////////////////////////////////////////////////////////////////////

        SubScene theScene = new SubScene(tingsMovement, maxX, maxY, true, SceneAntialiasing.BALANCED);

        theScene.setFill(Color.GRAY);

        theScene.setCamera(theCamera);

        getChildren().add(theScene);

    }

}

the calling code:

package evelynsgemz;

import javafx.animation.KeyFrame;

import javafx.animation.KeyValue;

import javafx.animation.Timeline;

import javafx.event.EventHandler;

import javafx.scene.Cursor;

import javafx.scene.Group;

import javafx.scene.control.ProgressBar;

import javafx.scene.image.Image;

import javafx.scene.input.MouseEvent;

import javafx.scene.layout.Pane;

import javafx.scene.paint.ImagePattern;

import javafx.scene.shape.Rectangle;

import javafx.stage.Stage;

import javafx.util.Duration;

/**

*

* @progName: EvelynsGEMz

* @fileName: EvelynsGemz.java

* @author: MyKel D

* @contributor: Wesley Owen

* @date: July 8,2013

*

*/

public class PlayGame extends GEMz {

    PlayGame(final Stage PlayGameStage) {

        super(PlayGameStage);

        setFullscreen(PlayGameStage);

        Pane chatbox = ChatBox(minX + 3, maxY - 265, 352, 234);

        Group Manager = UImanagment(PlayGameStage, centerX-150, maxY - 28, 350, 25);

        Manager.setFocusTraversable(true);

        View3D Td = new View3D(PlayGameStage);

        Td.setFocusTraversable(true);

        tingsMovement.setFocusTraversable(true);

       

       

       

       

        Group root;

        root = new Group();

        root.getChildren().addAll(Td, chatbox, Manager, doExit(maxX - 25, minY + 3, "X"));

        getChildren().add(root);

    }

even though tingsMovement.setFocusTraversable() has been set to true, the keyboard wont respond, the tab doesn't seem to go to View3D Td object to allow key processing - what am I doing wrong and any suggestions on how to fix??

This post has been answered by MyKel D. on May 9 2014
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 6 2014
Added on May 8 2014
1 comment
1,303 views