无法在Java中绘制椭圆形

时间:2018-06-25 13:37:53

标签: 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("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);
    }

}

2 个答案:

答案 0 :(得分:1)

JFrame的内部内容是它的内容窗格。您可以使用JFrame.setContentPane()将框架的内容窗格设置为要绘制的面板。然后将显示您的面板。

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);
    }

}

答案 1 :(得分:0)

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

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

Ball d = new Ball();
d.setLocation(0,0);
d.setSize(300, 500);

或仅使用布局管理器,例如默认设置-JFrame的BorderLayout-添加的面板将占据整个区域:

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