我如何找到扩展 class 的方法在哪里
How do i find where the method of an extended class is
我仍在学习编码,但我找不到 paintComponent 方法的来源,想了解如何找到它以供将来参考。
import java.awt.*;
import javax.swing.*;
public class Peach extends JPanel{
public void paintComponent (Graphics g){
}
}
一般这样的问题,看文档就可以解决了。如果您在 class 中看不到某个方法,它很可能是从父级继承的。
如果您查看此处然后搜索 paintComponent
,您将找到该方法。
您还可以从 IDE 中打开 class 声明,您将能够找到该方法。
paintComponent
method actually comes from abstract class JComponent
which is extend by the 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();
}
}
}
我仍在学习编码,但我找不到 paintComponent 方法的来源,想了解如何找到它以供将来参考。
import java.awt.*;
import javax.swing.*;
public class Peach extends JPanel{
public void paintComponent (Graphics g){
}
}
一般这样的问题,看文档就可以解决了。如果您在 class 中看不到某个方法,它很可能是从父级继承的。
如果您查看此处然后搜索 paintComponent
,您将找到该方法。
您还可以从 IDE 中打开 class 声明,您将能够找到该方法。
paintComponent
method actually comes from abstract class JComponent
which is extend by the 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();
}
}
}