Временно отключить двойную буферизацию в графическом апплете Java

#java #&raphics #applet

#java #графика #апплет

Вопрос:

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

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

Любая помощь высоко ценится.

Ответ №1:

Вы могли бы попробовать, выполнив что-то вроде

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

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

Комментарии:

1. Спасибо вам обоим за ответ, вы оба, похоже, имеете в виду одно и то же, поэтому я нашел некоторую информацию apl.jhu.edu /~hall/java/Swin&-Tutorial/… о двойной буферизации. Мой опыт работы с Java ограничен. Я использую закадровое изображение, поэтому вместо &2d.DrawLine() и т.д. Я пишу offscreenIma&e.DrawLine(). Я предполагаю, что это не стандартная двойная буферизация, на которую вы ссылаетесь? Есть ли простой способ просто переименовать «&2d» в «offscreenIma&e», когда используется печатная версия апплета?

Ответ №2:

Вы должны глобально отключить двойную буферизацию, а не только для одного компонента. В Swin& есть нечто, называемое RepaintMana&er. Это позволяет вам включать и отключать двойную буферизацию.