2014-04-18 1 views
3

일부 버튼이있는 JFrame 윈도우를 만들었습니다. 사용자가 특정 버튼을 클릭하면 메소드가 실행되고 메서드는 스캐너 객체를 사용하여 사용자로부터 정보를 가져옵니다.GUI의 JFrame을 사용하면 스캐너 클래스가 취소됩니까?

프레임에서 해당 버튼을 클릭 한 다음에는 어떤 방법 으로든 메소드가 시작되지만 정보를 입력 할 수 없습니다.

같은 응용 프로그램에서 JFrame과 Scanner 클래스를 사용할 수 있습니까?

+0

가능한 중복 [사용자 입력으로 인해 frame.getContentPane.removeAll()이 작동을 멈 춥니 다] (http://stackoverflow.com/questions/23150971/user-input-causes-frame-getcontentpane-removeall-to-stop- 작동) – trashgod

답변

3

예, 분명히 동시에 두 가지 방법을 사용할 수 있습니다. Scanner을 사용하여 명령 행에서 입력 할 수 없습니다.

Java 프로그램은 GUI 응용 프로그램이나 콘솔 응용 프로그램 중 하나 여야합니다. JFrame을 가져 오면 콘솔에서 코드를 읽지 않아야합니다. 입력 필드를 GUI에 추가 (예 : JTextField)하고 String을 읽습니다. 읽은 StringScanner으로 전달하여 토큰으로 세분 할 수 있습니다. 또는 여러 개의 텍스트 입력 필드를 만들고 그런 식으로 입력 할 수 있습니다.

+0

방금 ​​시도했는데 작동하는 것처럼 보입니다 ... 제 'JFrame'이 작동하지만'scanner = new Scanner (system.in)'뒤에'scanner.nextLine()'을 호출 할 수 있습니다. 자료. (이것은 Windows에 있습니다.) 제대로 작동한다면 개발 중에 임시 디버깅 측정으로 OK 일지라도 이것은 가난한 인터페이스라는 것에 확실히 동의하십시오. – ajb

+0

@ajb 코멘트 주셔서 감사합니다! 나는이 아주 오래 전에 시도한 것을 기억하며, 그것은 나에게 효과가 없었습니다. Java 1.2가 나왔을 때 돌아 왔지만, 현재의 지식은 아닙니다. 질문을 편집하여 소리처럼 들리도록했습니다. – dasblinkenlight

+0

@ajb : 초기 스레드에서 실행중인 스캐너와 [이벤트 발송 스레드] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)에서 동기화하는 데 약간의 노력이 필요할 수 있습니다. initial.html). – trashgod