___ qstntxt ___

Eu escrevi um programa simples de animação Java no Ubuntu 14.4.1. Uma bola se movendo dentro de um JPanel. Mas na execução, a bola se move bastante irregular no JPanel. Esse problema continua até que eu mova o mouse dentro do JPanel. No momento de mover o mouse dentro do JPanel, o movimento da bola é bastante suave. Deve ser dito que eu corri este programa no Windows 10, e nenhum problema ocorreu. O código do meu programa é o seguinte:

%pre%

Qual é o problema? Tenho que alterar algumas configurações no meu Ubuntu?
Eu também coloquei alguns códigos de teste dentro do método paintComponent da seguinte forma:

%pre%

com valor inicial do contador variável de 0 declarado na classe MovingBall. Observei que o número de chamadas do paintComponent por segundo é muito maior do que a taxa real de atualização do JPanel, conforme aparece.

    
___ tag123java ___ Java é uma linguagem de programação originalmente desenvolvida pela Sun Microsystems. As perguntas aqui devem ser sobre a instalação, configuração e resolução de problemas de uma JVM (Java Virtual Machine) ou um JRE (Java Runtime Environment). Perguntas de programação (a menos que diretamente relacionadas ao Ubuntu) devem ser feitas no StackOverflow.com. ___

3

Eu escrevi um programa simples de animação Java no Ubuntu 14.4.1. Uma bola se movendo dentro de um JPanel. Mas na execução, a bola se move bastante irregular no JPanel. Esse problema continua até que eu mova o mouse dentro do JPanel. No momento de mover o mouse dentro do JPanel, o movimento da bola é bastante suave. Deve ser dito que eu corri este programa no Windows 10, e nenhum problema ocorreu. O código do meu programa é o seguinte:

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

public class MovingBall extends JPanel {
    Ball ball = new Ball();

    void startAnimation() {
        while( true ) {
            try {
                Thread.sleep( 25 );
                ball.go();
                repaint();
            } catch( InterruptedException e ) {}
        } // end while( true )
    } // end method startAnimation()

    protected void paintComponent( Graphics g ) {
        super.paintComponent( g );
        ball.draw( g );
    } // end method paintComponent


    class Ball {
        int x;
        int y;
        int xSpeed = 100;
        int ySpeed = 70;

        void go() {
            x = x + (xSpeed*25)/1000;
            y = y + (ySpeed*25)/1000;
            if( x < 0 ) {
                x = 0;
                xSpeed = -xSpeed;
            } else if( x > 490 ) {
                x = 490;
                xSpeed = -xSpeed;
            } else if( y < 0 ) {
                y = 0;
                ySpeed = -ySpeed;
            } else if( y > 490 ) {
                y = 490;
                ySpeed = -ySpeed;
            } // end if-else block
        } // end method go()

        void draw( Graphics g ) {
            g.fillOval( x , y , 10 , 10 );
        } // end method draw
    } // end inner class Ball


    public static void main( String[] args ) {
        JFrame window = new JFrame();
        window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        MovingBall animation = new MovingBall();
        animation.setPreferredSize( new Dimension( 500 , 500 ) );
        animation.setBackground( Color.white );
        window.add( animation );
        window.pack();
        window.setVisible( true );

        animation.startAnimation();
    } // end method main
} // end class MovingBall

Qual é o problema? Tenho que alterar algumas configurações no meu Ubuntu?
Eu também coloquei alguns códigos de teste dentro do método paintComponent da seguinte forma:

protected void paintComponent( Graphics g ) {
    System.out.println( "paintComponent call number: " + counter );
    ++counter;
    super.printComponent( g );
    ball.draw( g );
}

com valor inicial do contador variável de 0 declarado na classe MovingBall. Observei que o número de chamadas do paintComponent por segundo é muito maior do que a taxa real de atualização do JPanel, conforme aparece.

    
por Hedayat 06.12.2016 / 15:02

0 respostas

Tags