最新情况:Set<Integer>
SwingUtilities.invokeLater();
private Set<Integer> keysDown = Collections.synchronizedSet(new HashSet<Integer>());public void keyPressed(KeyEvent e) { keysDown.add(e.getKeyCode());}public void keyReleased(KeyEvent e) { keysDown.remove(e.getKeyCode());}public void updatePaddlePositions(){ if (keysDown.contains(KeyEvent.VK_W)) paddleOne.move(-PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_S)) paddleOne.move(PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_UP)) paddleTwo.move(-PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_DOWN)) paddleTwo.move(PADDLE_MOVE_INCREMENT); try { Thread.sleep(DELAY); } catch (InterruptedException e) { System.out.println("You Interrupted the game!"); } canvas.repaint();}
paintComponent
canvas
public void paintComponent(Graphics g) { super.paintComponent(g); paddleOne.paint(g); paddleTwo.paint(g); updatePaddlePositions(); // Does this need to be SwingUtilities.invokeLater(this)? // And should updatePaddlePositions() be run() as a result?}
paint
paddleOne
paddleTwo
public void paint(Graphics g) { g.setColor(Color.BLACK); g.fillRect(x, y, PADDLE_WIDTH, PADDLE_HEIGHT); }
Collections.synchronizedSet(new HashSet<Integer>())
更新2:
HashSet<Integer>
Set<Integer>
Collections.synchronizedSet(...)
牧羊人nacy
蛊毒传说
tcp基本套接字编程流程中的绑定bind()是绑定什么?
关于并发方面的问题,同步异步,单例多例,单线程多线程一个怎么样的关系?
绑定了handlerThread里Looper的handler为何能更新UI?
HttpSessionBindingListener的绑定和解绑方法