не могу нарисовать овал в Java - PullRequest
0 голосов
/ 25 июня 2018

Я не могу нарисовать овал, я не могу понять, где я не прав.Я уже провел исследование, но я не нашел ответов, извините за беспокойство.Это мой простой код:

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 голосов
/ 25 июня 2018

Размер добавленной панели составляет (0, 0), поскольку вы не используете Layout Manager (game.setLayout(null)) и не задаете его размер.

В этом случае вы должны установить положение и размер любого добавленного компонента:

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

или просто использовать менеджер макетов, например, по умолчанию - BorderLayout дляJFrame - и добавленная панель займет всю площадь:

game.setResizable(false);
// game.setLayout(null);
game.setSize(300, 550);
0 голосов
/ 25 июня 2018

Внутренним содержимым 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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...