2017-11-21 16 views
5

Tôi đang cố gắng tìm cách để thực hiện chuyển động cơ bản của phím mũi tên trong cửa sổ bảng điều khiển. Tôi đã đi qua một kịch bản C# mà chỉ đơn giản là sử dụng một tuyên bố chuyển đổi và một số biến, nhưng giáo viên của tôi nhấn mạnh vào việc sử dụng Java.Làm thế nào để thực hiện chuyển động mũi tên cơ bản trong cửa sổ giao diện điều khiển bằng java?

Từ một số chủ đề khác, câu trả lời dường như không thể nói được trong Java trừ khi bạn cài đặt một số khung công cụ (đúng với tôi nếu tôi sai) như JNA và/hoặc Jline, nhưng là người mới bắt đầu, tôi không biết những điều đó thậm chí còn có ý nghĩa.

Bây giờ trước khi bạn nói thầy giáo của tôi là một thằng ngốc khi nghĩ chúng ta có thể làm điều đó, ông không bao giờ nói nó có phong trào được mũi tên-key, tôi chỉ nghĩ rằng nó muốn được mát mẻ :)

+2

Tôi đã bỏ phiếu vì đây là điều tôi đã tự hỏi trong một thời gian, nhưng không bận tâm nghiên cứu. Tôi có thể thấy lý do tại sao những người khác có thể downvote điều này (không có nỗ lực), nhưng nó thú vị, liên quan đến lập trình và cho thấy OP đã thực hiện một số nghiên cứu. – byxor

+0

sử dụng KeyEvent trong awt, với cùng một cơ chế được sử dụng trong C#. Chuyển đổi của bạn trên KeyEvent được phát hiện. Hãy cho tôi biết nếu bạn cần giải thích thêm, tôi sẽ thêm câu trả lời –

Trả lời

3

Đây là khó khăn hơn hơn là xuất hiện, chủ yếu là do cách Java hoạt động trên các nền tảng. Các giải pháp cơ bản để đọc từ bàn phím là sử dụng thiết bị nhập chuẩn, như vậy:

InputStream in = System.in; 

    int next = 0; 
    do { 
     next = in.read(); 
     System.out.println("Got " + next); 
    } while (next != -1); 

Giờ đây, có một hai vấn đề:

  1. trên nền tảng Unix này sẽ không in ký tự tiếp theo vì nó là nhấn nhưng chỉ sau khi trở về đã được nhấn, vì hệ điều hành đệm đầu vào theo mặc định
  2. Không có mã ascii cho các phím mũi tên, thay vào đó được gọi là chuỗi thoát phụ thuộc vào trình mô phỏng đầu cuối được sử dụng, v.v. Mac nếu tôi chạy mã trên và nhấn Mũi tên lên và sau đó phím trả về, tôi nhận được đầu ra sau đây:

    Got 27 // escape 
    Got 91 
    Got 65 
    Got 10 // newline 
    

Không có nền tảng cách tốt độc lập xung quanh này, nếu bạn chỉ nhắm mục tiêu nền tảng Unix, javacurses có thể giúp đỡ.

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