-3

我有这段代码,我试图让图形在点击后出现,我试图找出如何做到这一点,但每次我尝试运行它时,它都会出错,我不知道如何修复让它工作。

Exception in thread "main" java.lang.NullPointerException
    at memor.main(memor.java:131)

Graphics g= pan.getGraphics();  

代码

import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GridLayout;

import javax.swing.JButton;

public class memor extends JFrame
{
public static void main(String args[]){

final JPanel pan;
GridLayout h=new GridLayout(3,3);

pan =new JPanel(h);
JButton button1= new JButton("1");
pan.add(button1);
if (button1.isEnabled()){
Graphics g= pan.getGraphics();
g.setColor(new Color(156, 93, 82));
g.fill3DRect(21,3,7,12, true);
g.setColor(new Color(156,23,134));
g.fillOval(1,15,15,15);
g.fillOval(16,15,15,15);
g.fillOval(31,15,15,15);
g.fillOval(7,31,15,15);
g.fillOval(22,31,15,15);
g.fillOval(16,47,15,15);
}}
}
4

1 回答 1

4

在必须绘制组件时初始化a 中的Graphics对象。JComponent这意味着您必须先渲染JPanel 才能访问Graphics对象。

所以,你必须添加JPanel到 a JFrame(或者可能是 a JWindow),设置窗口可见,然后你就可以使用组件的Graphics对象。

无论如何,应该制作自定义图纸以覆盖JPanel'paintComponent方法。

于 2013-10-02T20:12:07.947 回答