我尝试使用 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
对象。
关于java - 画一条混合 swing 和 awt 的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793170/