我多次被告知当我将类扩展到JFrame时,paint()方法将被调用,例如。在代码中没有调用paint方法,我也没有看到任何绘制的矩形。
我甚至尝试在构造函数(我创建的)中调用paint方法,然后在main中为类创建一个obejct但是我得到了一个NullPointerException
import java.awt.Graphics;
import javax.swing.JFrame;
public class MyFirstDrawing extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String args[])
{
JFrame w = new JFrame("Hello World");
w.setTitle("My First Drawing");
w.setDefaultCloseOperation(EXIT_ON_CLOSE);
w.setSize(500,500);
w.setVisible(true);
}
public void paint(Graphics g)
{
g.drawRect(40, 40, 100, 200);
}
}
答案 0 :(得分:2)
你有两个框架:
扩展JFrame并覆盖paint()方法,但该框架永远不可见,因此永远不会调用paint()方法。
然后你创建一个可见的新JFrame,但是这个框架没有自定义绘画,所以你只看到框架。
无论如何,这不是自定义绘画的方式。通过覆盖JPanel的paintCompnent(...)
来完成自定义绘制,然后将面板添加到框架中。阅读Custom Painting上Swing教程中的部分,了解可以自定义的更多信息和工作示例。
教程示例将向您展示创建类的更好方法,因此无需扩展JFrame。按照教程示例进行操作。