can';在java中绘制椭圆

can';在java中绘制椭圆,java,graphics,Java,Graphics,我不会画椭圆,我不明白我错在哪里。我已经做了研究,但还没有找到答案,很抱歉给您添麻烦。 这是我的简单代码: public class Ball extends JPanel{ public void paint(Graphics g) { g.drawOval(100, 100, 50, 50); } public static void main(String[] args) { JFrame game = new JFrame("

我不会画椭圆,我不明白我错在哪里。我已经做了研究,但还没有找到答案,很抱歉给您添麻烦。 这是我的简单代码:

public class Ball extends JPanel{


    public void paint(Graphics g) {
        g.drawOval(100, 100, 50, 50);
    }

    public static void main(String[] args) {
        JFrame game = new JFrame("Ball game!");
        game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        game.setResizable(false);
        game.setLayout(null);
        game.setSize(300, 550);
        game.setLocation(400, 200);

        Ball d = new Ball();

        game.add(d);
        game.setVisible(true);
    }

}

JFrame的内部内容是它的contentpane。只需将框架的contentpane设置为要绘制的面板,即可。然后将显示您的面板

public class Ball extends JPanel{

    public void paint(Graphics g) {
        g.drawOval(100, 100, 50, 50);
    }

    public static void main(String[] args) {
        JFrame game = new JFrame("Ball game!");
        game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        game.setResizable(false);
        game.setLayout(null);
        game.setSize(300, 550);
        game.setLocation(400, 200);

        Ball d = new Ball();

        game.setContentPane(d); // <- this line
        game.setVisible(true);
    }

}
公共类Ball扩展了JPanel{
公共空间涂料(图g){
g、 drawOval(100,100,50,50);
}
公共静态void main(字符串[]args){
JFrame游戏=新JFrame(“球赛!”);
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setresizeable(false);
game.setLayout(null);
游戏设置大小(300550);
游戏设置位置(400200);
球d=新球();

game.setContentPane(d);//添加的面板的大小是
(0,0)
,因为您没有使用布局管理器(
game.setLayout(null)
)也没有设置其大小

在这种情况下,必须设置任何添加组件的位置和大小:

Ball d = new Ball();
d.setLocation(0,0);
d.setSize(300, 500);
或者只使用布局管理器,例如JFrame的默认单边框布局,添加的面板将占据整个区域:

game.setResizable(false);
// game.setLayout(null);
game.setSize(300, 550);

发生了什么,你期望什么?一个具有相同高度和宽度的椭圆形并不是一个真正的椭圆形…好吧,但它不会出现在JFrame中。好吧,你也可以将自定义面板添加到内容窗格中,就像他已经在做的那样-问题是他没有设置任何大小,并且正在使用空布局