Окраска линии над JPanel без перекраски - PullRequest
3 голосов
/ 18 мая 2011

Я бы хотел нарисовать вертикальную линию над JPanel и заставить ее скользить по ней, без этого процесса, вызывающего paintComponent() из JPanel. Я думал об использовании GlassPane, но я не думаю, что это правильный путь, поскольку в кадре есть другие компоненты, содержащие JPanel, и поэтому он не является специфическим для него (и я на самом деле не уверен, что это не вызовет paintComponent() в любом случае).

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Даже при использовании GlassPane базовый компонент должен быть перекрашен в какой-то момент. Нет хорошего способа избежать вызова paintComponent в JPanel.

Однако, JPanel не должен делать вещи в paintComponent, кроме рисования. Если вы пытаетесь избежать его вызова, значит, в методе paintComponent есть что-то, что нужно как-то изменить или как-то кэшировать.

1 голос
/ 18 мая 2011

Возможно, вам следует использовать Многослойные панели , если вы просто хотите изолировать код рисования линий от остального кода рисования.

Если ваш код рисования дорогой, то, возможно, вам следует создать BufferedImage, а затем просто перерисовать изображение в вашем коде paintComponent (). Это быстрее, чем перекрашивать с нуля каждый раз.

0 голосов
/ 18 мая 2011

Есть ли причина, по которой вы не хотите вызывать метод paintComponent () в JPanel?Перекраска объекта для отрисовки линии, скорее всего, будет самым простым решением.

...