Движение фигуры - 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); }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д