Очистка JPanel - PullRequest
       11

Очистка JPanel

3 голосов
/ 14 сентября 2011

Я делаю программу, в которой есть квадрат, который меняет свои позиции x и y при нажатии клавиши.Квадрат движется, но старый квадрат все еще там.Как мне удалить / очистить все с панели перед перерисовкой?Вызов removeAll не имел никакого эффекта.

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Предположительно, ваш код содержит пользовательскую логику paintComponent(). Главное, на что нужно обратить внимание - как выглядит ваша панель, когда вы не переопределяете paintComponent()? Пустая (или очищенная) панель:

Таким образом, решение состоит в том, чтобы вызвать метод paintComponent() родительского типа на панели перед выполнением пользовательской логики paintComponent():

public class CustomPanel extends JPanel {
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g); // first draw a clear/empty panel
    // then draw using your custom logic.
  }
}
0 голосов
/ 14 сентября 2011

Я думаю, что это должно работать.

g.clearRect (0, 0, panel.getWidth(), panel.getHeight());

Кроме того, вы можете сохранить старое местоположение квадрата и просто очистить его, а не очистить весь фон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...