Я пытаюсь создать PingPong в java, однако у меня возникают проблемы, создающие границы для мяча. После тестирования я обнаружил, что JFrame открывается слишком мало; Я устанавливаю ширину до 500, а JFrame открывается с 484 пикселями. Почему это?Java JFrame Открывается слишком мало
Вот моя игра класс:
общественный класс Game расширяет Canvas {
public static void main(String[] args){
new Game();
}
Display d;
public Game(){
d = new Display(this);
requestFocus();
}
public void start(){
System.out.println("Game started.");
}
public void stop(){
}
public void paint(Graphics g){
g.setColor(Color.DARK_GRAY);
g.fillRect(0, 0, 500, 400);
g.setColor(Color.GREEN);
g.drawLine(483, 0, 483, 399);
g.drawLine(0, 399, 499, 399);
}
}
Вот мой JFrame класс:
общественного класса Display расширяет JFrame {
JFrame frame;
Dimension screenSize;
public Display(Game game){
frame = new JFrame("PingPong");
screenSize = new Dimension(500, 400);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
//frame.setSize(500, 400);
frame.setPreferredSize(screenSize);
frame.setMinimumSize(screenSize);
frame.setMaximumSize(screenSize);
frame.setLocationRelativeTo(null);
frame.add(game);
//frame.pack();
game.start();
}
}
Как именно я это сделал? Я довольно новичок в разработке игр в java – Lol
@Lol: Взгляните на этот [ответ на вопрос о стекировании] (http://stackoverflow.com/a/35002727/300257). Это не пинг-понг, но он показывает, как правильно рисовать в Java Swing. Кроме того, посмотрите на [Выполнение пользовательской живописи] Oracle (https://docs.oracle.com/javase/tutorial/uiswing/painting/), чтобы увидеть другой пример. –
@Lol Это довольно легко. Глядя на ваш код, я вижу, что на самом деле у вас это довольно близко. Вам просто нужно изменить 'frame.setPreferredSize (screenSize)' на 'game.setPreferredSize (screenSize)', закомментировать строки 'setMinimumSize' и' setMaximumSize' и раскомментировать 'frame.pack()'. Я добавлю, что будет похоже на мой ответ. – resueman