小编Rei*_*ien的帖子

Java中的Graphics类如何工作?

最近,我一直在尝试用图形做一些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);
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,现在有一些事情对我没有意义.首先,当调用line时,它必须在line类中执行paintComponent方法.这是静态方法的属性(使用类名称调用).但paintComponent方法没有静态修饰符.

由于这个程序有效,我们必须假设paintComponent被调用并且期望Graphics对象作为参数.虽然它没有参数被调用.为什么这不会产生错误?我运行了一些测试,传入一个字符串,然后没有任何东西进入一个期望一个Integer对象的方法.我在这两个程序上都有错误.

因此,某种方式创建了一个名为g的图形对象,并使用了drawline方法.但图形是抽象的.

好的,这是我的问题:

  1. 当paintComponent不是静态时,为什么在调用类行时会自动调用paintComponent?

  2. 为什么paintComponent在需要Graphics对象时会接受空参数?

  3. 然后如何制作Graphics对象,因为Graphics类是抽象的并且无法实例化?

帮我Stack Overflow,你是我唯一的希望.

编辑:好的,我认为这个问题得到了很好的回答,谢谢!

java graphics swing paintcomponent

4
推荐指数
1
解决办法
5885
查看次数

标签 统计

graphics ×1

java ×1

paintcomponent ×1

swing ×1