javax.swing. Замедление времени в Java7u40
Вызовите javax.swing.Timer # start () в то же время,
7u25 это не проблема.
но 7u40 это большая проблема.
Слишком медленный вызов ActionListener # actionPerformed. (в основном в то же время вызвать U25)
Совершенно разные движения между u25 и u40. (Я использую Windows 8) Я сообщаю об ошибке, но все еще не добавляю систему отслеживания ошибок. Oracle сокрушает свинг-приложения?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TimerProblem extends JComponent {
int red = 0;
TimerProblem(final long startMs) {
setPreferredSize(new Dimension(10, 10));
Timer t = new Timer(16, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
red = (int)(System.currentTimeMillis() - startMs) % 255;
repaint();
}
});
t.setInitialDelay(1000);
t.start();
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(new Color(red, 255 - red, 0));
g.fillRect(0, 0, getWidth(), getHeight());
}
public static void main(String[] args) {
JFrame f = new JFrame();
Container c = f.getContentPane();
c.setLayout(new GridLayout(10, 10));
long startMs = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
c.add(new TimerProblem(startMs));
}
f.pack();
f.setVisible(true);
}
}