2013-12-02 2 views
0

я читал через это:Что вызывает неявный вызов paint() для компонента в AWT?

http://www.oracle.com/technetwork/java/painting-140037.html#triggers

И он упоминает следующее:

В операции покраски система срабатывает, система запрашивает компонент для отображения его содержимого, как правило, для одна из следующих причин: причины:

  • Компонент в первую очередь отображается на экране ееп.
  • Компонент изменен.
  • У компонента есть повреждения, которые необходимо отремонтировать. (Для примера , что-то, что ранее затушевало компонент, переместилось, и ранее закрытая часть компонента стала выставлена).

Первый пункт довольно очевиден. Тем не менее, вторая и третья точки оставляют желать лучшего при определении того, нужно ли мне переписывать(). Почти любой пример, который я вижу, вызывает перерисовку() всякий раз, когда графические свойства компонента меняются вообще. Однако есть некоторые признаки того, что если я изменю некоторые свойства, мне не нужно будет переписывать(). Какими могут быть эти свойства?

ответ

2

Если у вас есть метод, который изменяет свойство компонента, которое влияет на способ компоновки компонента, тогда этот метод должен вызывать repaint(), а не код приложения. То есть перекраска должна быть скрыта от программиста.

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

+0

Что я имел в виду, это обрезка на графике, нарисованной на JPanel. Так что не сам JPanel. –

+0

@BrianReindel, все еще не понимаю. Обрезание выполняется, когда компонент перекрашивается. Это легко проверить. Получаете ли вы желаемые результаты? Если вы этого не сделаете, отправьте сообщение «SSCCE». – camickr

+0

Я думаю, что пример отсечения был плохим. В основном меня беспокоит, когда мне следует переименовать(), и когда AWT собирается называть paint() для меня. Лучше спросить, используя вышеописанные пункты, что будет представлять собой «изменение размера» для компонента? –

Смежные вопросы