嘿大家,我试图运行以下程序,但是遇到了一个异常.我是新来的Java摆库所以我可以做一些非常愚蠢的。不管怎样这是我的两个类别,我只是玩弄于现在和我所想要做的就是绘制一个该死的圆(ill要绘制一个gallow,刽子手上,它在结束)。

package hangman2;

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

public class Hangman2 extends JFrame{
    private GridLayout alphabetLayout = new GridLayout(2,2,5,5);
    private Gallow gallow = new Gallow();

    public Hangman2() {

        setLayout(alphabetLayout);

        setSize(1000,500);
        setVisible( true );

    }

    public static void main( String args[] ) {   
     Hangman2 application = new Hangman2();
     application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
}


package hangman2;

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

public class Gallow extends JPanel {
    private Graphics g;

    public Gallow(){
        g.fillOval(10, 20, 40, 25);       
    }
}

的异常来自于在克。fillOval线。

在此先感谢,

托梅克

有帮助吗?

解决方案

你得到展会上因为 g 未设定,因此,它的 null.此外,你不应该这样做图在构造。超载 paintComponent(Graphics g) 代替。

public class Gallow extends JPanel {
    public paintComponent(Graphics g){
        g.fillOval(10, 20, 40, 25);       
    }
}

我也想看看 BufferedImage.

其他提示

几件事情:不要忘记小组到的 JFrame.和复盖 paint() 方法 JPanel 为你定制的绘画。你不需要声明一个形象由于 JPanel's涂料的方法将有一个参考一个在任何情况下。

package hangman2;

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

public class Hangman2 extends JFrame{
    private GridLayout alphabetLayout = new GridLayout(2,2,5,5);
    private Gallow gallow = new Gallow();

    public Hangman2() {

        setLayout(alphabetLayout);
        add(gallow, BorderLayout.CENTER);//here
        setSize(1000,500);
        setVisible( true );

    }

    public static void main( String args[] ) {   
        Hangman2 application = new Hangman2();
        application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
}


package hangman2;

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

public class Gallow extends JPanel {

    public Gallow(){
        super();
    }

    public void paint(Graphics g){
        g.fillOval(10, 20, 40, 25);       
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top