PaintComponent вообще не работает

Я использую paintComponent для создания графического интерфейса для присвоения класса, и это вообще не влияет на внешний вид графического интерфейса. Для начала я просто устанавливаю белый фон. Следующий код работает:

import javax.swing.*;
import java.awt.*;

public class PA05a extends JPanel {
  public static void main(String[] args) {
    JFrame window = new JFrame("MouseDrawDemo");
    JPanel content = new JPanel();

    content.setBackground(Color.WHITE);

    window.setContentPane(content);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setLocation(120,70);
    window.setSize(400,300);
    window.setVisible(true);
  }
}

но это не так:

import javax.swing.*;
import java.awt.*;

public class PA05a extends JPanel {
  public static void main(String[] args) {
    JFrame window = new JFrame("MouseDrawDemo");
    JPanel content = new JPanel();

    window.setContentPane(content);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setLocation(120,70);
    window.setSize(400,300);
    window.setVisible(true);
  }

  @Override
  public void paintComponent(Graphics g) {
    //add backdrop
    super.paintComponent(g);
    g.setColor(Color.WHITE);
    g.fillRect(0,0,getWidth(),getHeight());
  }
}

Я не могу просто не использовать paintComponent, потому что позже я буду добавлять вещи, которые будут меняться от кадра к кадру. Может ли кто-нибудь указать, где я что-то упускаю?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
141
2

Ответы 2

JPanel content = new PA05a();

Вы не создали объект PA05a. ;)

Вы просто забыли создать свой объект. Измените свой код на:

import javax.swing.*;
import java.awt.*;

public class PA05a extends JPanel {
  public static void main(String[] args) {
    JFrame window = new JFrame("MouseDrawDemo");
    JPanel content = new PA05a();

    window.setContentPane(content);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setLocation(120,70);
    window.setSize(400,300);
    window.setVisible(true);
  }

  @Override
  public void paintComponent(Graphics g) {
    //add backdrop
    super.paintComponent(g);
    g.setColor(Color.WHITE);
    g.fillRect(0,0,getWidth(),getHeight());
  }
}

Другие вопросы по теме