Пример кода Head First Java Swing дает различное поведение в Ubuntu и MacOS - PullRequest
0 голосов
/ 28 января 2019

Один и тот же фрагмент кода Java дает разные результаты на Ubuntu 18.04 и MacOS X.

Привет, я читаю книгу Head First Java, английская версия.В главе 12, посвященной Swing, приведен пример, который называется SimpleAnimation на стр. 385. В исходном коде программа должна нарисовать траекторию движения круга.Я добился этого результата, используя машину Ubuntu 18.04 с Java 8 (не помнил конкретную версию).Однако на компьютере MacOS X с Java 8.0_201 программа автоматически очищает траекторию движения круга.Кто-нибудь знает, почему это произошло?

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


public class SimpleAnimation {

    int x = 70;
    int y = 70;

    public static void main(String[] args) {
        SimpleAnimation gui = new SimpleAnimation();
        gui.go();
    }

    public void go() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        MyDrawPanel drawPanel = new MyDrawPanel();

        frame.getContentPane().add(drawPanel);
        frame.setSize(300, 300);
        frame.setVisible(true);

        for (int i = 0; i < 130; i++) {
            x++;
            y++;
            //System.out.println("VALUE OF X AND Y : " +x +" " +y);
            drawPanel.repaint();

            try {
                Thread.sleep(50);
            } catch (Exception ex) {
            }
        }

    }// close go() method


    class MyDrawPanel extends JPanel {

        public void paintComponent(Graphics g) {
            g.setColor(Color.green);
            g.fillOval(x, y, 40, 40);

        }
    } // close inner class
} // close outer class

Ожидаемое: анимация показывает траекторию движения круга.(Достигнуто в Ubuntu 18.04) Фактически: дорожка стирается автоматически.(Появилось на MacOS X)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...