Как реализовать нажатие двух клавиш одновременно?

 
 
 
Сообщения:1
Я в этой теме новичок, поэтому не смейтесь слишком сильно)
class myPanel extends JPanel{
	private Image img;
	int x, y;
	int napr=3;
	int key1=0;
	int key2=0;
	private class myKey implements KeyListener{
		public void keyPressed(KeyEvent e) {
			int _key = e.getKeyCode();
			key1 = e.getKeyCode();
			key2 = e.getKeyCode();
			if(_key==37) napr=0;
			if(_key==38) napr=1;
			if(_key==39) napr=2;
			if(_key==40) napr=3;
			if((key1==37 && key2==38)||(key1==38 && key2==37)) napr=4;
			if((key1==38 && key2==39)||(key1==39 && key2==38)) napr=5;
			if((key1==39 && key2==40)||(key1==40 && key2==39)) napr=6;
			if((key1==41 && key2==37)||(key1==37 && key2==41)) napr=7;
		}
		public void keyReleased(KeyEvent e) {
			key1=0;
			key2=0;
		}
		public void keyTyped(KeyEvent e) {
			
		}
	}
    public myPanel() {
		addKeyListener(new myKey());
		setFocusable(true);
		try {
			img = ImageIO.read(new File("C:\\earth.png"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		Timer nt = new Timer(10, new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(napr==0) x--;
				if(napr==1) y--;
				if(napr==2) x++;
				if(napr==3) y++;
				if(napr==4) {
					x--;
					y--;
				}
				if(napr==5) {
					x++;
					y--;
				}
				if(napr==6) {
					x++;
					y++;
				}
				if(napr==7) {
					x--;
					y++;
				}
				repaint();
			}});
		nt.start();	
		}

как вы уже поняли, ничего не работает, работает только нажатия с одой клавишей.
как исправить?
 
 
Сообщения:189
			key1 = e.getKeyCode();
			key2 = e.getKeyCode();
			...
			if((key1==37 && key2==38) ... // ?

Что это? Как переменные, значения которых определены как равные, могут быть равны сразу двум разным числам?

 
 
Сообщения:721
согласен, e.getKeyCode() выдаст код последней нажатой клавиши. даже если не отпускать предыдущие.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет