Движение фигуры - Java
Формулировка задачи:
Привет всем. Решил попрактиковать JPanel и GUI, и в задаче необходимо перемещать фигуру по оси Х и У движением мыши. Скрипт работает и перемещает , но только в тот момент когда окно только только появляется, а нужно что-бы фигура двигалась в течение всего времени работы программы.
Вот код:
package mouse; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Frames extends JFrame{ public Frames(String str){ super(str); Container c = getContentPane(); Panel p = new Panel(); c.add(p); setSize(500,500); setVisible(true); } } class Panel extends JPanel{ int x,y; public Panel(){ addMouseMotionListener(new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e) { x = e.getX(); y = e.getY(); } }); } public void paintComponent(Graphics g){ g.setColor(Color.red); g.fillOval(x,y,66,66); } }
Решение задачи: «Движение фигуры»
textual
Листинг программы
package sample; /** * 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.Timeline; import javafx.animation.TranslateTransition; import javafx.animation.TranslateTransitionBuilder; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.util.Duration; /** * A sample in which a node moves from one location to another over a given * time. * * @related animation/transitions/FadeTransition * @related animation/transitions/FillTransition * @related animation/transitions/ParallelTransition * @related animation/transitions/PathTransition * @related animation/transitions/PauseTransition * @related animation/transitions/RotateTransition * @related animation/transitions/ScaleTransition * @related animation/transitions/SequentialTransition * @related animation/transitions/StrokeTransition * @see javafx.animation.TranslateTransition * @see javafx.animation.TranslateTransitionBuilder * @see javafx.animation.Transition */ public class TranslateTransitionSample extends Application { private TranslateTransition translateTransition; private void init(Stage primaryStage) { Group root = new Group(); primaryStage.setResizable(false); primaryStage.setScene(new Scene(root, 450,100)); Circle circle = new Circle(20, Color.CRIMSON); circle.setTranslateX(20); circle.setTranslateY(50); root.getChildren().add(circle); translateTransition = new TranslateTransition(Duration.seconds(4),circle); translateTransition.setFromX(50); translateTransition.setToX(380); translateTransition.setCycleCount(Timeline.INDEFINITE); translateTransition.setAutoReverse(true); translateTransition = TranslateTransitionBuilder.create() .duration(Duration.seconds(4)) .node(circle) .fromX(50) .toX(380) .cycleCount(Timeline.INDEFINITE) .autoReverse(true) .build(); } public void play() { translateTransition.play(); } @Override public void stop() { translateTransition.stop(); } public double getSampleWidth() { return 400; } public double getSampleHeight() { return 100; } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); play(); } public static void main(String[] args) { launch(args); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д