java - 画一条混合 swing 和 awt 的线

标签 java swing awt

我尝试使用 Graphics 类绘制一条线,然后将其放入 JFrame 对象中:

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JLabel;

class Window
{
    private JFrame frame;
    private Graphics g;

    public void Window()
    {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocation(15, 0);
        frame.setSize(600, 200);
        frame.setVisible(true);

    }        

    public void DrawCross()
    { 

        g.setColor(Color.BLACK);
        g.drawLine(300,0, 200, 0);
        frame.paint(g);  
    }        

}      

...

run:
Exception in thread "main" java.lang.NullPointerException
    at Window.DrawCross(Window.java:33)
    at Main.main(main.java:21)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

我错在哪里以及如何纠正我的错误?不可能初始化抽象的 Graphics 类的对象。

最佳答案

Graphics 对象尚未实例化,导致抛出 NPE

这种方法是完全错误的。不要直接调用paint。另外,不要在 JFrame 上进行任何自定义绘制,而是添加 JComponent 的子类并覆盖 paintComponent。在这里,您将拥有一个易于实例化的 Graphics 对象。

Painting in AWT and Swing

关于java - 画一条混合 swing 和 awt 的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793170/

相关文章:

java - JButton背景图像文本

java - 带有 Applet 和 JPanel 菜单的 JFrame

java - 使用 Java 在 4 x 6 纸上打印 1800 x 1200 图像

java - 尽量不要混合使用 Swing 和 AWT

java - java awt 中的顶级窗口是什么?

java - 将 hibernate 类从基于序列的整数主键迁移到 GUID 主键,同时保留旧键以实现向后兼容性?

java - Android AsyncTask 的 onProgressUpdate 不工作

java - 如何在swing和swt中分离程序逻辑形式设计

java - 尝试从本地URL使用Kotlin-gradle插件

Web 上的 Java 应用程序