【问题标题】:How can I read the Javadocs?如何阅读 Javadocs?
【发布时间】:2015-01-03 04:12:27
【问题描述】:
我浏览了所有论坛,发现了一个与我类似的问题,但它没有回答我要问的问题。
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 上绘制东西的功能。
【问题讨论】:
标签:
graphics
jpanel
paintcomponent
【解决方案1】:
public void paintComponent(Graphics g);
上面那行代码应该是你重写的方法。所以它不应该只以分号结尾。但我只是耸耸肩。我会尽量让这件事变得简单。在您的程序中,您创建一个 JPanel,然后将其添加到 JFrame。 JFrame 将知道您添加了一个 JPanel。编写 JFrame 代码的程序员会知道 JPanel 有一个 paintComponent 方法,并会调用它并传入 Graphics 对象。此外,现在它正在调用您已覆盖的方法,它将运行您在其中的任何代码。
super.paintComponent(g);
当您覆盖代码时,您将删除之前存在的所有内容并将新代码放入其中。这意味着所有旧代码都消失了,但是当您调用 super.paintComponent(g);你基本上是说,运行旧代码和我的代码。
您应该掌握 OOP 概念以及对象及其方法相互交互的方式。了解如何开发应用程序将使您更容易使用他人的代码。你可以开始here。
【解决方案2】:
DrawSomething 类将定义方法paintComponent。对 DrawSomething 类的对象调用 paintComponent 将执行该方法。您尚未定义您的方法,但如果您定义了,该方法的代码将会运行。
关键字“super”允许您引用父类的方法,在本例中为 JPanel。当您想要扩展父方法时,这很有用:让它做同样的事情和额外的事情。请注意,您不能像以前那样在类定义中直接使用它,您必须将其放入方法中。