Java JPanel方法paintComponent()

Java JPanel方法paintComponent(),java,swing,jpanel,awt,jcomponent,Java,Swing,Jpanel,Awt,Jcomponent,我们可以通过简单地实例化JPanel对象来使用paintComponent()方法吗 //probably in this fashion public class appletic{ JComponent p= new JPanel(); int d=10; public void pC(Graphics g){ p.paintComponent(g); g.fillOval(40,40, d, d); } //this code isn't right bu

我们可以通过简单地实例化
JPanel
对象来使用
paintComponent()
方法吗

//probably in this fashion
public class appletic{
  JComponent p= new JPanel();
  int d=10; 
  public void pC(Graphics g){
    p.paintComponent(g);
    g.fillOval(40,40, d, d);
  }
//this code isn't right but just to give a brief idea about my question
不扩展嵌入该方法的特定类

public class appletic extends JPanel {
  int d=10; 
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.fillOval(40,40, d, d);
  }

在您的第一段代码中,如何使用图形实例调用pC方法?虽然这是可能的,但这是非常不鼓励的做法。使用JPanel及其paintComponent方法的正确方法是将它添加到一个窗口/框架中,让内置的绘画框架调用它,让youTry阅读。问题是为什么?你这样做有什么好处?在Swing中绘制要比只调用
绘制
复杂得多,例如,需要正确设置和转换
图形
上下文,以便在正确的位置绘制组件。绘画是通过一系列链接的方法实现的,每个方法都执行特定的工作,到目前为止,您已经在第一个示例中打破了绘画链的责任。如果要生成组件的快照,应该使用
print
printAll
@MadProgrammer“问题是为什么?”这是一个很好的问题。请参见备注:这(获取有效的图形对象)对于
buffereImage
来说非常简单。。