Strange behaviour at the beginning of the game

Hello, in my game, player doesn’t start to move constantly. For example:
X coordinates:
100 (position before movement)
104 (start to move)
160 ???
164
168
etc…

Why it suddenly jump from 104 to 160? Here is my code:

	
	private void addListeners(){
		setFocusable(true);
		addKeyListener(new KeyListener(){

			@Override
			public void keyPressed(KeyEvent e) {
				pressed.add(e.getKeyChar());
				System.out.println("KEY");
				if(isKeyDown == false){
					for(Character c : pressed){
						//System.out.print("X : "+player.getX());
						//System.out.println(" Y : "+player.getY());
						
						if(c == 'w' && player.getY()+-1*SPEED > 10){
							speedY = -1*SPEED;
						}if(c == 's' && player.getY()+SPEED < 640){
							speedY = SPEED;
						}if(c == 'a' && player.getX()+-1*SPEED > 10){
							speedX = -1*SPEED;
						}if(c == 'd' && player.getX()+SPEED < 1190){
							speedX = SPEED;
						}
						isKeyDown = true;
					}
				}
				
			}

			@Override
			public void keyReleased(KeyEvent e) {
				pressed.remove(e.getKeyChar());
				int key = e.getKeyCode();
				if(key == KeyEvent.VK_W || key == KeyEvent.VK_S){
					speedY = 0;
				}
				if(key == KeyEvent.VK_A || key == KeyEvent.VK_D){
					speedX = 0;
				}
			}

			@Override
			public void keyTyped(KeyEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
	}
	
	private void update(){
		System.out.println("UPDATE");
		player.setX(player.getX()+speedX);
		player.setY(player.getY()+speedY);
	}
	
//Timer 20ms
	@Override
	public void actionPerformed(ActionEvent arg0) {
		update();
		repaint();
		isKeyDown = false;
	}

Actually, in player movement, I don’t see that jump. But coordinates jump at the beginning and that makes it impossible to make good collision detection. What’s wrong here?