【问题标题】:How do i find where the method of an extended class is我如何找到扩展类的方法在哪里
【发布时间】:2019-12-02 06:24:33
【问题描述】:

我仍在学习编码,但我找不到 paintComponent 方法的来源,我想知道如何找到它的位置以供将来参考。

import java.awt.*;
import javax.swing.*;
public class Peach extends JPanel{
    public void paintComponent (Graphics g){


    }
}

【问题讨论】:

  • 来自“JPanel”类?

标签: java class inheritance methods extend


【解决方案1】:

paintComponent method 实际上来自abstract class JComponent,它是由JPanel class 扩展的,而JPanel class 又是您要扩展的。

paintComponent 的实际实现是:

/**
 * Calls the UI delegate's paint method, if the UI delegate
 * is non-<code>null</code>.  We pass the delegate a copy of the
 * <code>Graphics</code> object to protect the rest of the
 * paint code from irrevocable changes
 * (for example, <code>Graphics.translate</code>).
 * <p>
 * If you override this in a subclass you should not make permanent
 * changes to the passed in <code>Graphics</code>. For example, you
 * should not alter the clip <code>Rectangle</code> or modify the
 * transform. If you need to do these operations you may find it
 * easier to create a new <code>Graphics</code> from the passed in
 * <code>Graphics</code> and manipulate it. Further, if you do not
 * invoker super's implementation you must honor the opaque property,
 * that is
 * if this component is opaque, you must completely fill in the background
 * in a non-opaque color. If you do not honor the opaque property you
 * will likely see visual artifacts.
 * <p>
 * The passed in <code>Graphics</code> object might
 * have a transform other than the identify transform
 * installed on it.  In this case, you might get
 * unexpected results if you cumulatively apply
 * another transform.
 *
 * @param g the <code>Graphics</code> object to protect
 * @see #paint
 * @see ComponentUI
 */
protected void paintComponent(Graphics g) {
    if (ui != null) {
        Graphics scratchGraphics = (g == null) ? null : g.create();
        try {
            ui.update(scratchGraphics, this);
        }
        finally {
            scratchGraphics.dispose();
        }
    }
}

【讨论】:

    【解决方案2】:

    通常可以通过查看文档来回答此类问题。如果你在你的类中看不到一个方法,它很可能是从父类继承的。

    JPanel Docs

    如果你看这里然后搜索paintComponent你会找到方法。

    您也可以从 IDE 中打开类声明,然后就可以找到方法。

    【讨论】:

    • 哦,我在 JPanel 中寻找它,但在那里找不到它,但 JPanel 正在扩展我忽略的 JComponent。在里面找到了谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2010-11-16
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多