首页 > 解决方案 > PaintComponent 似乎没有接到电话或显示

问题描述

我的问题很简单:我有这个小程序,它只是没有显示我正在尝试制作的红色框:

主要的

public class Main {
    public static void main(String[] args) {
        Affichage a = new Affichage();
        a.setVisible(true);
    }
}

附言:

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

public class Affichage extends Frame{
    public Affichage(){
        setTitle("Exo 1 : Galerie");
        setSize(1120,560);
        Graphique graph = new Graphique();
        this.add(graph);
    }
}

图形:

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

public class Graphique extends JComponent {
    @Override
    public void paintComponents(Graphics g) {
        super.paintComponents(g);
        Graphics pinceau = g.create();

        pinceau.setColor(Color.RED);
        pinceau.fillRect(100, 100, 200, 200);

        System.out.println("test");
    }
}

我敢打赌这是嘲笑,但我找不到它是什么,帮帮我。PS:是的,测试也没有打印出来

标签: javaswingjcomponent

解决方案


实际上,不要扩展JFrame,因为这是不好的做法。只是做一个实例。绘制、扩展JPanel和覆盖paintComponent.

JFrame f = new JFrame();
f.add(new MyPanel());

class MyPanel extends JPanel {
   // other stuff
   public void paintComponent(Graphics g) {
       super.paintComponent(g);  
       // painting stuff.
   }
}

并记住不要混合SwingAWT组件。


推荐阅读