0 голосов
спросил от в категории Java
Код, кажется, работает. Смотрите мои прокомментированные строки, где я удалил или добавил код:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; public class Ball extends JPanel implements ActionListener,KeyListener { private static final long serialVersionUID = -3622302774061996117L; //created an obj for the class Timer Timer t=new Timer(10,this); // created the x y coordinates and made the velocity variables  int x=0,y=0,velX=0,velY=0; //created the method and started the timer and added the KeyListener  public Ball() { t.start(); addKeyListener(this); // remove the following two lines here // setFocusable(true); // setFocusTraversalKeysEnabled(false); } //over rode the paint component method and created the obj that is gonna be controled by the arrow keys @Override public void paintComponent(Graphics g) { super.paintComponent(g);    this.setBackground(Color.WHITE); g.setColor(new Color(66, 134, 244)); Graphics2D g2= (Graphics2D) g; Ellipse2D circle=new Ellipse2D.Double(x,y,40,40); g2.fill(circle); } //Over rode the action performed method and gave the obj the ability to move @Override public synchronized void actionPerformed(ActionEvent e) { if(x<-40) { velX=0; x=600; } if(y<-40) { velY=0; y=600; } if(x>600) { velX=0; x=-40; } if(y>600) { velY=0; y=-40; } x+=velX; y+=velY; repaint(); } //Over rode the key pressed method so as the user can control the obj by the arrow keys @Override public synchronized void keyPressed(KeyEvent e) { int c=e.getKeyCode(); if(c==KeyEvent.VK_UP) { velY=-3; velX=0; }         if(c==KeyEvent.VK_DOWN) { velY=3; velX=0; }         if(c==KeyEvent.VK_RIGHT) {         velX=3;         velY=0;         }         if(c==KeyEvent.VK_LEFT) {         velX=-3;         velY=0;         } } //Over rode the key released method so as the obj would stop moving when the arrow keys are released @Override public synchronized void keyReleased(KeyEvent e) { velY=0; velX=0; } @Override public void keyTyped(KeyEvent e) {} //created the main window public static void main(String [] args) { JFrame frame=new JFrame("moving ball"); Ball b=new Ball(); frame.setSize(600,600); frame.setVisible(true); frame.setResizable(false); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); // added the following three lines here frame.setFocusable(true); frame.setFocusTraversalKeysEnabled(false); frame.addKeyListener(b); frame.add(b);     } }

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...