Временно отключите двойную буферизацию в графическом апплете Java - PullRequest
2 голосов
/ 09 ноября 2010

Есть ли простой способ отключить двойную буферизацию в Java-апплете, если это необходимо?У меня есть Java-апплет, который отображает и анимирует музыкальную партитуру, поэтому мне понадобился двойной буфер.Однако в учебных целях мне нужно распечатать этот апплет.Проблема в том, что до того, как я добавил буферизацию, вывод на принтер был векторным, поэтому я мог сделать его настолько большим, насколько я хотел, и он выглядел бы плавно (а также использовать более дешевый тип черных чернил!), Но с двойной буферизацией выводаэто, конечно, изображение, и довольно низкое разрешение при этом!

По сути, мне нужен тот же апплет, чтобы использовал двойную буферизацию, когда он вызывается с параметром "display_tune" , но рисовать прямо на графике с векторным выводом, когда он вызывается с параметром "view_tune".

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Вы должны глобально отключить двойную буферизацию, а не только для одного компонента.У Swing есть нечто, называемое RepaintManager .Позволяет включать и отключать двойную буферизацию.

2 голосов
/ 09 ноября 2010

Вы можете попробовать сделать что-то вроде

yourComponent.setDoubleBuffered(false);
// your print code
yourComponent.setDoubleBuffered(true);

метод объявлен в JComponent. Я использовал это решение для экспорта PNG из графика Jung , и это сработало. Я не уверен, что Юнг переопределяет этот метод внутри своих компонентов, но попытка не помешает ...

...