我怎么读Javadocs?

时间:2015-01-03 04:12:28

标签: graphics jpanel paintcomponent

我去了各个论坛,我发现了一个类似于我的问题,但它没有回答我要问的问题。

public class DrawSomething extends JPanel {

  public void paintComponent(Graphics g); //how is an object passed in that parameter?
  super.paintComponent(g); //I don't get how that works
  this.setBackground(Color.white);

同样,我很遗憾上面的代码如何赋予在JPanel上绘制内容的功能。

2 个答案:

答案 0 :(得分:1)

public void paintComponent(Graphics g);

上面的代码行应该是您覆盖的方法。所以它不应该以分号结尾。但我会耸耸肩。我会尽量让这个变得简单。在您的程序中,您创建一个JPanel,并将其添加到JFrame。 JFrame将知道您添加了JPanel。编写JFrame的程序员将知道JPanel有一个paintComponent方法,并将调用它并传入Graphics对象。此外,现在它正在调用一个你已经覆盖的方法,它将运行你在那里的任何代码。

super.paintComponent(g);

当你覆盖代码时,你正在删除之前的任何内容并将新代码放入其中。这意味着当你调用super.paintComponent(g)时,所有旧代码都消失了;你基本上是在说,运行旧代码和我的代码。

您应该掌握OOP概念以及对象及其方法彼此交互的方式。了解如何开发应用程序将使您更容易使用其他人的代码。您可以启动here

答案 1 :(得分:0)

DrawSomething类将定义方法paintComponent。在类DrawSomething的对象上调用paintComponent将执行该方法。您尚未定义方法,但如果您这样做,则会运行该方法的代码。

关键字“super”允许您引用父类的方法,在本例中为JPanel。当你想扩展父方法时,这很有用:让它做同样的事情和额外的事情。请注意,您不能以您的方式直接在类定义中使用它,您必须将它放在方法中。