Движение фигуры - 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); }
}

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


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

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

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