Метод PaintComponent не вызывается - PullRequest
0 голосов
/ 01 октября 2019

Я написал следующий код. Все отлично работаетТам нет ошибок компиляции. пока я вижу только желтое окно и больше ничего. Я публикую свой метод рисования здесь.

мой метод рисования

  @Override
    public void paintComponent(Graphics g)
    {super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(x,100,150,200);
        fh++;
    }
    }

I попытался расширить Jpanel, JFrame, Jcomponent и т. Д. Я пыталсяpaint (), а также paintComponent ()

Я добавляю полный код для справки мой код


import javax.swing.*;
import java.awt.*;
import static javax.swing.JFrame.EXIT_ON_CLOSE;

class painting extends JPanel
{static Component c=new Canvas();
 static JFrame f=new JFrame();
 int fh;
 int x=50;
    public void main(String args[]) throws InterruptedException
   {
    f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    f.add(c);
     f.setVisible(true);   
     f.setSize(300,320);

     /*
     c.setSize(200,220);
     c.setBackground(Color.yellow);
     c.setForeground(Color.red);
     c.setVisible(true);
     */
     for(;x<200;x++)
     {x=x+10;
     repaint();
     Thread.sleep(10);
    }
    }
    @Override
    public void paintComponent(Graphics g)
    {super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(x,100,150,200);
        fh++;
    }
    }

1 Ответ

0 голосов
/ 01 октября 2019

Метод компонента paintComponent вызывается только в том случае, если этот компонент добавлен в окно. Вы добавили new Canvas() в свое окно, но никогда не добавляли экземпляр своей собственной специализированной панели painting в свое окно.

Это можно исправить, удалив это:

static Component c=new Canvas();

и заменив это:

f.add(c);

на это:

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