Моя JPanel не перерисовывается так часто, как должнаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Моя JPanel не перерисовывается так часто, как должна

Сообщение Anonymous »

У меня есть модель, которая развивается с помощью таймера и отображает данные на JPanel. Обновление задается с помощью прослушивателя свойств.
В какой-то момент модель обрабатывает довольно большой объем данных, и не каждый шаг приводит к перерисовке, до такой степени, что модель развивается на 20 шагов для одиночная перерисовка.
Я делаю что-то не так со структурой своего кода?
Я пробовал использовать синхронизированный для некоторых из этих методов , проблема остается.
Вот SSCCE:
class main(){
Model model;
MyPanel panel;

model.addPropertyChangeListener("currentStep", panel);
}

class Model {

private final PropertyChangeSupport support = new PropertyChangeSupport(this);
private int step, previousStep;

public World (){
startTimer();
}

private void startTimer() {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (isRunning) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
step();
}
});
}
}
}, 0, periodMillisec);
}

public void step() {
// do stuff
step++;
updateListeners();
}

protected void updateListeners() {
support.firePropertyChange("currentStep", prevStep, step);
previousStep = step;
}
}

class MyPanel extends JPanel implements PropertyChangeListener {

public void paintComponent(Graphics g){
// paint stuff
}

@Override
public void propertyChange(PropertyChangeEvent evt) {
evt.getNewValue());
repaint();
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -it-should
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»