Обнаружение и действие на клавиши направления клавиатуры в Java

Правильный путь:

trackData = trackData.filter { 
    !([110].noteNumber == 60 && [110].duration == AKDuration(beats: 4.0))
}
9
задан elwynn 21 February 2009 в 02:42
поделиться

3 ответа

Консольная проблема поддержки в Java известна, я не уверен, что это выполнимо.

Это не было первоначально возможно с System.in, так как он раньше работал основанный на строке.

Sun в конечном счете добавил java.io. Консольный класс.

Вот его JavaDocs: http://java.sun.com/javase/6/docs/api/java/io/Console.html

После того как Вы получаете консоль (я думаю от System.console), можно получить читателя и возможно считать символы из него, но я не уверен, включает ли это ключи.

Обычно Вы, как предполагается, используете Swing или AWT, если Вы хотите получить доступ к клавиатуре, которая глупа.

По состоянию на 2007 был запрос новых функций об этом: здесь

4
ответ дан 4 December 2019 в 13:50
поделиться

Если java.io.console не работает на Вас (я не попробовал это), попробуйте JLine. Я использовал его для решения неопределенно подобной проблемы.

6
ответ дан 4 December 2019 в 13:50
поделиться

К сожалению, это не возможно портативным способом:

http://forums.sun.com/thread.jspa?threadID=5351637&messageID=10526512

В Windows, читающем из System.in, заблокируется до enter нажимается, даже когда Вы не используете a BufferedReader. Стрелки циклически повторятся через историю команд. Попробуйте его сами:

import java.io.*;
public class KeyTest {
  public static void main(String[] argv) {
    try {
      InputStreamReader unbuffered = new InputStreamReader(System.in);
      for (int i = 0; i < 10; ++i) {
        int x = unbuffered.read();
        System.out.println(String.format("%08x", x));
      }
    } catch (Exception e) {
      System.err.println(e);
    }
  }
}

Та же проблема с помощью Console класс (вход, буферизованный в соответствии с Windows, клавиши со стрелками intepreted Windows):

import java.io.*;
public class KeyTest2 {
  public static void main(String[] argv) {
    try {
      Console cons = System.console();
      if (cons != null) {
        Reader unbuffered = cons.reader();
        for (int i = 0; i < 10; ++i ) {
          int x = unbuffered.read();
          System.out.println(String.format("%08x", x));
        }
      }
    } catch (Exception e) {
      System.err.println(e);
    }
  }
}
5
ответ дан 4 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: