2009-01-05 72 views
8

Tôi vừa mới bắt đầu xử lý xung đột với JLine để phân tích cú pháp nhập ký tự trong chế độ bảng điều khiển. Dường như hoạt động tốt, nhưng tôi tự hỏi:Phân tích cú pháp đầu vào bàn phím Java trong ứng dụng giao diện điều khiển

Có cách nào không chặn trong JLine để tìm hiểu xem các ký tự có khả dụng không? (ví dụ: kbhit() trong Windows.)

Tôi cho rằng tôi luôn có thể bọc đầu vào bàn phím theo chủ đề của riêng nó.

EDIT: Đây là phân tích theo từng ký tự. Tôi sẽ không sử dụng GUI. Thông thường InputStream I/O trong Java ở chế độ bàn điều khiển yêu cầu bạn phải nhấn phím Enter trước (ví dụ: chỉ bộ đệm được nhập). Xin vui lòng không cho tôi biết đầu vào từng ký tự trong chế độ bàn điều khiển là không thể trong Java; không phải vậy. JLine thực hiện nó bằng cách sử dụng một giao diện di động với việc triển khai dựa trên nền tảng.

Chỉnh sửa bản cập nhật: Tôi đã có thể hack cùng một lớp trợ giúp để thực hiện chặn I/O trong chuỗi công nhân (sử dụng JLine cho mỗi ký tự I/O, cảnh báo: bạn phải phân tích Ctrl-C chính mình!) & sau đó giao tiếp thông qua một hàng đợi được đồng bộ hóa với một thói quen isempty(). Đối với những gì tôi đang làm ngay bây giờ là tốt, nhưng tôi thực sự muốn biết một cách tốt để làm điều này trong tương lai.

+4

Bạn có thể đăng câu trả lời không? Trông rất thú vị. – OscarRyz

Trả lời

4

Bạn dường như đi đúng hướng.

Tôi nghĩ cách "đúng" để làm điều này là một chuỗi công nhân đổ tất cả các I/O chặn vào hàng đợi không bị chặn. Hava xem qua số ConcurrentLinkedQueue từ java.util.concurrent.

Các vấn đề liên quan