JButton을 사용하여 간단한 애니메이션 시작

Aneem

저는 HeadFirst Java 2nd Edition을 따르고 있으며 버튼 클릭으로 한 지점에서 다른 지점으로 대각선으로 이동하는 원의 간단한 애니메이션을 수행하려고합니다. JPanel을 사용하여 원을 그리고 ActionListener 인터페이스를 사용하여 버튼에서 이벤트를 가져옵니다. 'main ()'에서 애니메이션 함수를 직접 호출하면 애니메이션이 제대로 작동합니다. 그러나 버튼을 클릭 한 후 그렇게하려고하면 프로그램이 정지되고 최종 결과가 직접 표시됩니다.

암호:

import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class SimpleAnimation{
    int x=70;
    int y=70;
    JFrame frame;
    MyDrawPanel drawPanel;

    public static void main(String[] args) {
        SimpleAnimation gui=new SimpleAnimation();
        gui.initialize();
        // gui.animate();               //animation method
    }

    public void initialize(){
        frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        drawPanel=new MyDrawPanel();
        frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
        frame.setSize(400,400);
        frame.setVisible(true);
        JButton button=new JButton("Click me!");
        frame.getContentPane().add(BorderLayout.EAST,button);
        button.addActionListener(new OnclickListener());
    }

    public void animate(){
        for (int i=0;i<130 ;i++ ) {
            x++;
            y++;
            drawPanel.repaint();
            try{
                Thread.sleep(50);
                }catch(Exception e){}
            }
        }

        class MyDrawPanel extends JPanel{
            public void paintComponent(Graphics g){
                g.setColor(Color.white);
                g.fillRect(0,0,this.getWidth(), this.getHeight());
                g.setColor(Color.green);
                g.fillOval(x,y,40,40);
            }
        }

        class OnclickListener implements ActionListener{
            public  void actionPerformed(ActionEvent event){
                animate();
            }
        }
}
아크

repaint () 호출은 다시 그리기 요청을 대기열에 넣습니다. 즉시 화면을 다시 칠한다고 생각할 수 있습니다. 귀하의 요청은 모두이 대기열에 쌓여서 실행되기를 기다리고 있으며 사실상 모두 한꺼번에 실행됩니다.

서로 다른 애니메이션 사이에 거리를 두려면 Thread.sleep () 호출이 아닌 타이머가 필요합니다. java.util에 제공되는 타이머가 있지만 대신 Swing에서 타이머를 사용해야합니다.

자세한 내용을 설명하는 여러 사이트가있는 "Java의 애니메이션"에 대한 Google 검색을 권장합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JFrame 및 JPanel을 사용한 간단한 Java 애니메이션

분류에서Dev

간단한 애니메이션을위한 각도 지시문

분류에서Dev

콜백을 사용하여 다른 시간에 동일한 요소 애니메이션

분류에서Dev

VelocityJS에서 한 애니메이션 끝에 다른 애니메이션을 시작하는 방법

분류에서Dev

ng-hide 애니메이션을 사용하여 간단한 슬라이드 쇼 효과 만들기

분류에서Dev

SkiaSharp를 사용하여 Xamarin에서 간단한 애니메이션을 만드는 방법

분류에서Dev

버튼을 사용하여 jquery에서 다음 애니메이션 시작

분류에서Dev

간단한 애니메이션 작성

분류에서Dev

CAAnimationGroup을 사용한 시퀀스 애니메이션

분류에서Dev

애니메이션을 사용하여 가시성을 변경 한 후 Android 텍스트보기가 깜박임

분류에서Dev

간단한 CSS 키 프레임 애니메이션이 작동하지 않음

분류에서Dev

CAKeyframeAnimation을 사용하여 UIView의 애니메이션 시작을 지연 하시겠습니까?

분류에서Dev

iOS7에서 작동하지 않는 간단한 애니메이션

분류에서Dev

애니메이션 기능을 사용하여 창로드시 jQuery 애니메이션을 시작하는 방법은 무엇입니까?

분류에서Dev

애니메이션 드로어 블을 사용하여 애니메이션 표시

분류에서Dev

간단한 스케일링 애니메이션을 수행하는 방법과 이것이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

클릭시 scrollTo 애니메이션을 차단하는 방법

분류에서Dev

AffineTransform을 사용한 애니메이션

분류에서Dev

Matplotlib : 애니메이션을 시작하는 버튼을 클릭 한 후 애니메이션을 저장하는 방법은 무엇입니까?

분류에서Dev

Swift를 사용하여 단일 UIView에서 여러 동시 애니메이션

분류에서Dev

.addClass를 사용하여 여러 div 및 애니메이션으로 애니메이션을 시작하는 방법

분류에서Dev

laravel 4.2 및 mailtrap을 사용하여 간단한 메시지를 이메일로 보냅니다.

분류에서Dev

Javascript를 사용하여 애니메이션을 중지하고 시작하는 방법은 무엇입니까?

분류에서Dev

tableViewCell에서 애니메이션을 실행하면 사용자 상호 작용이 차단됩니까?

분류에서Dev

"caliburn micro 2"및 "windows phone 8.1"을 사용하여 애니메이션을 시작하는 방법

분류에서Dev

UIKit을 사용하여 단일 div에서 작동하도록 2 개 이상의 애니메이션을 얻으려면 어떻게해야합니까?

분류에서Dev

상태가 변경되면 애니메이션이 시작되지 않음 (시연을위한 간단한 간식)

분류에서Dev

한 div의 숨김을 시퀀스 한 다음 jQuery 애니메이션을 사용하여 다른 div를 표시하는 방법은 무엇입니까?

분류에서Dev

UISearchController를 사용하여 UISearchBar 및 UIBarButtonItem을 동시에 애니메이션

Related 관련 기사

  1. 1

    JFrame 및 JPanel을 사용한 간단한 Java 애니메이션

  2. 2

    간단한 애니메이션을위한 각도 지시문

  3. 3

    콜백을 사용하여 다른 시간에 동일한 요소 애니메이션

  4. 4

    VelocityJS에서 한 애니메이션 끝에 다른 애니메이션을 시작하는 방법

  5. 5

    ng-hide 애니메이션을 사용하여 간단한 슬라이드 쇼 효과 만들기

  6. 6

    SkiaSharp를 사용하여 Xamarin에서 간단한 애니메이션을 만드는 방법

  7. 7

    버튼을 사용하여 jquery에서 다음 애니메이션 시작

  8. 8

    간단한 애니메이션 작성

  9. 9

    CAAnimationGroup을 사용한 시퀀스 애니메이션

  10. 10

    애니메이션을 사용하여 가시성을 변경 한 후 Android 텍스트보기가 깜박임

  11. 11

    간단한 CSS 키 프레임 애니메이션이 작동하지 않음

  12. 12

    CAKeyframeAnimation을 사용하여 UIView의 애니메이션 시작을 지연 하시겠습니까?

  13. 13

    iOS7에서 작동하지 않는 간단한 애니메이션

  14. 14

    애니메이션 기능을 사용하여 창로드시 jQuery 애니메이션을 시작하는 방법은 무엇입니까?

  15. 15

    애니메이션 드로어 블을 사용하여 애니메이션 표시

  16. 16

    간단한 스케일링 애니메이션을 수행하는 방법과 이것이 작동하지 않는 이유는 무엇입니까?

  17. 17

    클릭시 scrollTo 애니메이션을 차단하는 방법

  18. 18

    AffineTransform을 사용한 애니메이션

  19. 19

    Matplotlib : 애니메이션을 시작하는 버튼을 클릭 한 후 애니메이션을 저장하는 방법은 무엇입니까?

  20. 20

    Swift를 사용하여 단일 UIView에서 여러 동시 애니메이션

  21. 21

    .addClass를 사용하여 여러 div 및 애니메이션으로 애니메이션을 시작하는 방법

  22. 22

    laravel 4.2 및 mailtrap을 사용하여 간단한 메시지를 이메일로 보냅니다.

  23. 23

    Javascript를 사용하여 애니메이션을 중지하고 시작하는 방법은 무엇입니까?

  24. 24

    tableViewCell에서 애니메이션을 실행하면 사용자 상호 작용이 차단됩니까?

  25. 25

    "caliburn micro 2"및 "windows phone 8.1"을 사용하여 애니메이션을 시작하는 방법

  26. 26

    UIKit을 사용하여 단일 div에서 작동하도록 2 개 이상의 애니메이션을 얻으려면 어떻게해야합니까?

  27. 27

    상태가 변경되면 애니메이션이 시작되지 않음 (시연을위한 간단한 간식)

  28. 28

    한 div의 숨김을 시퀀스 한 다음 jQuery 애니메이션을 사용하여 다른 div를 표시하는 방법은 무엇입니까?

  29. 29

    UISearchController를 사용하여 UISearchBar 및 UIBarButtonItem을 동시에 애니메이션

뜨겁다태그

보관