Я - новичок.
package com.company;
import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
public class Main extends JPanel {
int i=0;
public static void main(String[] args) {
JFrame window = new JFrame(String.valueOf(600));
window.setContentPane(new Main());
window.setSize(600,600);
window.setBackground(Color.CYAN);
window.setResizable(false);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
}
public void paintComponent (Graphics g){
Graphics2D graphic = (Graphics2D) g;
g.setColor(Color.black);
graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //сглаживание
Circle(g);
graphic.clearRect(20,20,30,30);
}
public void Circle(Graphics g) {
int x = 100;
int[] i = {0};
g.drawOval(x-50, x-50, 400, 400);
while (i[0] <360){
double a = Math.PI * i[0] / 180;
double gradus = Math.sin(a);
double gradus1 = Math.cos(a);
int gr = (int) Math.round(gradus*x);
int gr1 = (int) Math.round(gradus1*x);
g.drawOval((gr+122)*2, (gr1+122)*2, 10, 10);
System.out.println(gr);
i[0] = i[0] +30; }
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!"+ i[0]);
i[0]++;
}
};
Timer timer = new Timer();
System.out.println("Привет");
long delay = 0;
long intevalPeriod = 1000;
// schedules the task to be run in an interval
timer.scheduleAtFixedRate(task, delay,
intevalPeriod);
}}
1. Подбором совместил координаты центров малых окружностей и большую окружность . Как это сделать по умному, т.е. программно и с формулами?
2. При запуске программы идет повтор. Считает координаты (я рад!), выводит приветствие (я рад!),
НО!потом начинает снова считать координаты и выводить приветствие, Почему?
НО! потом САМОСТОЯТЕЛЬНО! перестает считать координаты и выводит приветствия, помеченные глобальной переменной со счетчиком (я рад!). Почему?
3. Хочется сделать перемещение объекта по заданной траектории, но не афинными трансформациями, а дифурами с приращением по времени. Java ругается и не дает впихнуть paintComponent в таймер.
Что делать ?