Предотвратить super.paintComponent от вызова clearRect - PullRequest
0 голосов
/ 04 марта 2012

В подклассе JComponent я переопределяю paintComponent метод рисования.Первое, что делает переопределенный метод, это вызывает super.paintComponent, так как большинство текстов говорят мне сделать это.Некоторые говорят, что это необходимо, чтобы другие JComponents могли рисовать сами.Однако, вызов метода super очищает изображение, заполняя его цветом фона.Я не хочу, чтобы это случилось.Если я пропущу вызов супер-метода, я свободен выбрать, хочу ли я позвонить

g.setColor(getBackground());
g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

, чтобы очистить изображение перед перерисовкой.

Но я волнуюсьчто, пропуская метод super, я пропущу другие важные операции, которые выполняет метод super.Как я могу убедиться, что эти другие важные операции выполняются, в то же время позволяя себе выбрать, хочу ли я очистить изображение или нет?

РЕДАКТИРОВАТЬ:

Вот мой paintComponent:

public void paintComponent(Graphics g) {
    super.paintComponent(g); // necessary so other panels can paint themselves.    
    //         g.setColor(getBackground());
    //         g.fillRect(0, 0, getWidth(), getHeight());
    //         g.setColor(Color.black);
    if (down) {
        g.drawLine(downX, downY, currentX, currentY);
    }        
}

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

Как таковая, программа удалит линию, которую рисует пользователь, если мышь отпущена.Я не хочу, чтобы программа была таковой, чтобы был след линий.

1 Ответ

0 голосов
/ 04 марта 2012

Вы можете безопасно пропустить вызов super () или установить для opaque значение false с помощью setCpague () * JComponent

Удачи!

...