Я пишу графический интерфейс. В этом графическом интерфейсе много форм (около 200). Я использовал метод краски, чтобы нарисовать их.
В одной ситуации я должен заставить их мигать (переключение между двумя цветами). В цикле for я меняю их цвета, а затем fram.repaint();
Однако, когда я нажимал некоторые кнопки, через некоторое время программа становилась очень медленной. Я проверил через профиль (я использую Netbeans). Я увидел, что AWT-Event-Queue через некоторое время начинает работать постоянно.
Итак, у меня может быть два решения:
Есть ли способ разделить AWT-EventQueue, чтобы добавить еще один AWT-EventQueue? или есть лучший способ заставить мигать 200 фигур?
Спасибо
примечание: подробно я видел, что pumpEvents, pumpEventsForHierarchy, pumpEventsForFilter, pumpOneEventFilters, ...
Вот метод покраски:
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(bs_3);
g2d.setColor(currentcolor);
g2d.draw(line);;
}
Вот нить:
paintTimer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mframe.repaint();
for (CircuitPanel cp : mframe.cppL){
cp.onOff();
}
});
paintTimer.start();
Вот метод смены цвета:
@Override
public void onOff() {
if(currentcolor.equals(offcolor)){
currentcolor=oncolor;
}else{
currentcolor=offcolor;
}
}
paint(Graphics g)
? - person Hakan Serce   schedule 17.05.2012paintComponent(...)
. Это даст вам двойную буферизацию по умолчанию. Я вижу ваш объект paintTimer, но где вы его создаете? - person Hovercraft Full Of Eels   schedule 18.05.2012