最近,我一直在尝试用图形来做一些 Java 工作。现在 Graphics 类是抽象的,这意味着它本身不能被实例化,但它的子类可能能够被实例化。那么下面的代码中发生了什么。(确实成功创建了一条线)
import javax.swing.*;
import java.awt.*;
public class line extends JPanel {
public void paintComponent(Graphics g) {
g.drawLine(0, 0, 90, 90);
}
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.add(new line());
jf.setSize(500, 500);
jf.setVisible(true);
}
}
好吧,现在有些事情对我来说没有意义。首先,当 line 被调用时,它必须在 line 类中制定 paintComponent 方法。这是静态方法的一个属性(使用类名调用)。但是paintComponent 方法没有静态修饰符。
由于这个程序可以工作,尽管我们必须假设 paintComponent 确实被调用并期望一个 Graphics 对象作为参数。当它被调用时,虽然它没有参数。为什么这不会产生错误?我通过传入一个字符串运行了一些测试,然后没有任何东西进入一个期望一个整数对象的方法。我在两个程序上都有错误。
因此,不知何故创建了一个名为 g 的图形对象,并使用了 drawline 方法。但是图形是抽象的。
好的,这是我的问题:
为什么在paintComponent不是静态的情况下调用它的类行时会自动调用paintComponent?
为什么 paintComponent 在需要 Graphics 对象时接受空参数?
由于 Graphics 类是抽象的且无法实例化,因此如何制作 Graphics 对象 g?
帮助我 Stack Overflow,你是我唯一的希望。
编辑:好的,我认为这个问题很好回答,谢谢!