Движение фигуры - Java

Узнай цену своей работы

Формулировка задачи:

Привет всем. Решил попрактиковать JPanel и GUI, и в задаче необходимо перемещать фигуру по оси Х и У движением мыши. Скрипт работает и перемещает , но только в тот момент когда окно только только появляется, а нужно что-бы фигура двигалась в течение всего времени работы программы. Вот код:
Листинг программы
  1. package mouse;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. public class Frames extends JFrame{
  7. public Frames(String str){
  8. super(str);
  9. Container c = getContentPane();
  10. Panel p = new Panel();
  11. c.add(p);
  12. setSize(500,500);
  13. setVisible(true);
  14. }
  15. }
  16. class Panel extends JPanel{
  17. int x,y;
  18. public Panel(){
  19. addMouseMotionListener(new MouseMotionAdapter(){
  20. public void mouseMoved(MouseEvent e) {
  21. x = e.getX();
  22. y = e.getY();
  23. }
  24. });
  25. }
  26. public void paintComponent(Graphics g){
  27. g.setColor(Color.red);
  28. g.fillOval(x,y,66,66);
  29. }
  30. }

Решение задачи: «Движение фигуры»

textual
Листинг программы
  1. package sample; /**
  2.  * Copyright (c) 2008, 2012 Oracle and/or its affiliates.
  3.  * All rights reserved. Use is subject to license terms.
  4.  */
  5. import javafx.application.Application;
  6. import javafx.scene.Group;
  7. import javafx.scene.Scene;
  8. import javafx.stage.Stage;
  9. import javafx.animation.Timeline;
  10. import javafx.animation.TranslateTransition;
  11. import javafx.animation.TranslateTransitionBuilder;
  12. import javafx.scene.paint.Color;
  13. import javafx.scene.shape.Circle;
  14. import javafx.util.Duration;
  15.  
  16. /**
  17.  * A sample in which a node moves from one location to another over a given
  18.  * time.
  19.  *
  20.  * @related animation/transitions/FadeTransition
  21.  * @related animation/transitions/FillTransition
  22.  * @related animation/transitions/ParallelTransition
  23.  * @related animation/transitions/PathTransition
  24.  * @related animation/transitions/PauseTransition
  25.  * @related animation/transitions/RotateTransition
  26.  * @related animation/transitions/ScaleTransition
  27.  * @related animation/transitions/SequentialTransition
  28.  * @related animation/transitions/StrokeTransition
  29.  * @see javafx.animation.TranslateTransition
  30.  * @see javafx.animation.TranslateTransitionBuilder
  31.  * @see javafx.animation.Transition
  32.  */
  33. public class TranslateTransitionSample extends Application {
  34.  
  35.     private TranslateTransition translateTransition;
  36.  
  37.     private void init(Stage primaryStage) {
  38.         Group root = new Group();
  39.         primaryStage.setResizable(false);
  40.         primaryStage.setScene(new Scene(root, 450,100));
  41.         Circle circle = new Circle(20, Color.CRIMSON);
  42.         circle.setTranslateX(20);
  43.         circle.setTranslateY(50);
  44.         root.getChildren().add(circle);
  45.         translateTransition = new TranslateTransition(Duration.seconds(4),circle);
  46.         translateTransition.setFromX(50);
  47.         translateTransition.setToX(380);
  48.         translateTransition.setCycleCount(Timeline.INDEFINITE);
  49.         translateTransition.setAutoReverse(true);
  50.         translateTransition = TranslateTransitionBuilder.create()
  51.                 .duration(Duration.seconds(4))
  52.                 .node(circle)
  53.                 .fromX(50)
  54.                 .toX(380)
  55.                 .cycleCount(Timeline.INDEFINITE)
  56.                 .autoReverse(true)
  57.                 .build();
  58.     }
  59.  
  60.     public void play() {
  61.         translateTransition.play();
  62.     }
  63.  
  64.     @Override public void stop() {
  65.         translateTransition.stop();
  66.     }
  67.  
  68.     public double getSampleWidth() { return 400; }
  69.  
  70.     public double getSampleHeight() { return 100; }
  71.  
  72.     @Override public void start(Stage primaryStage) throws Exception {
  73.         init(primaryStage);
  74.         primaryStage.show();
  75.         play();
  76.     }
  77.     public static void main(String[] args) { launch(args); }
  78. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут