код работает для графики Java, но не graphics2d - PullRequest
0 голосов
/ 23 февраля 2009

внутри компонента краски. он принимает g в качестве параметра, а g может быть graphics или graphics2d. класс расширяет jpanel. то:

super.paintComponent(g);
this.setBackground( Color.BLACK );

если g - графика, то она работает, а если - graphics2d - нет. он компилируется с обоими, но graphics2d не меняет цвет фона. как получилось?

1 Ответ

4 голосов
/ 23 февраля 2009

JPanel (который является подклассом JComponent) имеет только метод paintComponent(Graphics). У него нет метода с подписью paintComponent(Graphics2D).

Переопределение метода paintComponent(Graphics) может быть выполнено следующим образом:

public void paintComponent(Graphics g)
{
    // Do things.
}

Однако определение метода с подписью с paintComponent(Graphics2D), как показано ниже, является допустимым, но он никогда не будет вызван , поскольку он не переопределяет любой метод, определенный в JComponent :

public void paintComponent(Graphics2D g)
{
    // Do things.
    // However, this method will never be called, as it is not overriding any
    // method of JComponent, but is a method of the class this is defined in.
}

Спецификации Java API для JComponent класса (который является суперклассом JPanel) содержат сводку методов, в которой перечислены все методы, являющиеся частью класса.

Подробнее о живописи на качелях;

...