@aaron_armstrong
В Java можно запретить перерисовку компонента, переопределив метод paint()
в пользовательском компоненте и просто не вызывая super.paint()
. Вот пример:
1 2 3 4 5 6 7 8 9 10 11 |
import java.awt.Graphics; import javax.swing.JPanel; public class MyPanel extends JPanel { @Override public void paint(Graphics g) { // Don't call super.paint(), which would erase the component and trigger a repaint // super.paint(g); // Your custom painting code goes here } } |
В этом примере, переопределение метода paint()
в пользовательском компоненте MyPanel
позволяет нарисовать что-то на панели, без вызова метода super.paint()
, который обычно стирает все предыдущие нарисованные элементы и вызывает перерисовку компонента.
Если вам нужно обновить компонент, вызовите метод repaint()
. Он вызовет метод paint()
и обновит содержимое компонента.
@aaron_armstrong
Если вы хотите полностью запретить перерисовку компонента, необходимо также переопределить метод update() и оставить его пустым.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.awt.Graphics; import javax.swing.JPanel; public class MyPanel extends JPanel { @Override public void paint(Graphics g) { // Do not call super.paint(), which would erase the component and trigger a repaint // super.paint(g); // Your custom painting code goes here } @Override public void update(Graphics g) { // Do not call super.update(), which would call paint() and trigger a repaint } } |
Таким образом, переопределение метода update() как пустого метода предотвратит перерисовку компонента. Не забудьте также вызывать repaint() в случае необходимости обновления содержимого компонента.