제 친구들과 키보드/마우스가없는 터치 스크린 터미널 용 GUI로 Java로 프로그램을 작성했습니다. GUI 내에서 모든 것이 발생하며 대부분의 입력은 버튼 누름입니다. 우리는 마그네틱 카드 리더 (키보드 모드에서)를 부착하고 카드에서 읽은 다음 그 카드의 데이터를 기반으로 처리를 수행하려고합니다. Java : GUI에서 입력 라인을 가져와야하고 콘솔에서만 작동합니다.
나는 콘솔에서 작동하는 클래스를 작성하지만, GUI를 통해 실행할 때 그냥 Alt + Tab을 때까지 중단하고, IDE의 (이클립스) 콘솔 내부를 클릭하고 카드를 스 와이프합니다. 내가 뭘 찾고있는이 입력 승/O를 GUI를 떠나야하는 데 얻을 수있는 방법입니다. 당신은 단순히 어디서나 동일한 라인, TXT 문서, 콘솔, 무엇을 입력 수있는 데이터의 두 트랙을 포함하는 행을 보낼거야 keyboard--의 카드 정보를 입력 한 것처럼는 MCR 작동합니다.
cardreadbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
CardRead.main();
}
});
내가이되는 InputStream 일하는 것이 어쩌면 생각했지만, 난 정말 함께 일한 적이 :
GUI의import java.util.Scanner;
public class CardRead {
public static void main()
{
String raw_card_data = "";
Scanner read = new Scanner(System.in);
System.out.println("Scan card"); // changed to an outputArea.setText for GUI
raw_card_data = read.nextLine(); // works in console, not within GUI
/* insert processing here */
}
}
코드는 단순히 다음과 같이
관련 코드는 그들. 다음과 같이 내가 IOUtils에 대한 제안을 통합하는 시도 : 검색 좀이 thread을 발견
InputStream is = System.in;
StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, null);
raw_card_data = writer.toString();
System.out.println(raw_card_data);
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(writer);
내가 그 권리를하고있어 경우 모르겠지만, 콘솔에서 (에 시도하지 않은 GUI), 이제는 "스캔 카드"라고 말하며 raw_card_data를 인쇄하거나 다른 작업을 수행하지 않습니다. "closeQuietly"나는 here:
에서 가져온 ...하지만 내가 바로 그 일을하고있어 경우 다시, 나는 몰라. 아파치 IOUtils도 사용하지 않았습니다.
그래서 나는 갇혀 있고, 나는 너희들을 찾고있다. GUI에서이 카드 데이터를 가져 와서 어떻게 할 수 있습니까?
중요 사항 : 카드 데이터가 작동하지 않습니다 Scanner.next 같은 변수 (우리가 보존해야하는) 그 공백의 #, 그래서 아무것도()가 있습니다. 카드 판독기는 구분 기호와 캐리지 리턴으로 구분 된 두 트랙이있는 행을 보내도록 설정되어 있으므로 .nextLine()이 작동합니다. 카드 데이터는 가변 바이트 수/문자이기도합니다.
기타 : 첫 번째 코드 블록에서 System.out.println이 do while 루프 앞에 있습니다. raw_card_data = read.nextLine()은 실제로 관련이 없다고 느껴져서 제외되었습니다. 왜 이렇게하는지 궁금해.) GUI에서 JTextArea로 표시하기 위해 println을 setText()로 변경하면 카드 데이터가 콘솔에 입력 된 후에 표시됩니다. do가 실행되기 전에 발생하고 그 전에 실행해야합니다. 나는 이해하지 못한다. 롤.
고마워. 키보드 후크는 제가 함께 할 것입니다,하지만 그것을 구현하는 데 도움이 필요합니다. 둘러 볼게, 또 다른 질문을 올릴거야. – electrickoolaid42