30/09/2018, 17:00

Cách bắt sự kiện keydown trong Java?

Mình đang dùng Netbean để viết chương trình bắt phím bằng Java. Đoạn code sau là để bắt phím mũi tên san phải >. Nếu mình bấm nút đấy thì chương trình này phải in ra “What the ****”.

Thế nhưng mình đang gặp một vấn đề là: Đôi khi bấm phím > thì chương trình in ra “What the ****”, đôi khi bấm > thì lại không in ra gì cả mặc dù mình không sửa code.

Đây là đoạn code mình đang viết:

    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JFrame;
    import javax.swing.JPanel;

    /**
    *
    * @author thinh
    */
    public class Testkeylistener extends JPanel {
        Testkeylistener(){
            addKeyListener(new attack());
            setFocusable(true);
        }
    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Testkeylistener game = new Testkeylistener();
        frame.setTitle("game one piece");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700,500);
        frame.setVisible(true);
    // frame.setLocationRelativeTo(null);
        frame.getContentPane().add(game);
    }
    private class attack extends KeyAdapter {
        @Override
        public void keyTyped(KeyEvent e) {
            System.out.println(" it's me");
        }
        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("what the ****");
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }

    }
}

Đây là link toàn bộ project nếu ai có thời gian xem thì mình cảm ơn

UpFile.vn

Lỗi 404 - UpFile.vn

Lỗi 404 - UpFile.vn

Nguyễn Minh Dũng viết 19:01 ngày 30/09/2018

Code này up lên hình như thiếu một dấu {

P/S: Lần sau OP dùng Markdown để post bài nhé

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…
chazo1994 viết 19:05 ngày 30/09/2018

Markdown để post bài nhé

nãy em định dùng cái markdown nhưng mà thấy bản xem trc nó ko hiện vào 1 vùng nên e cứ tưởng

chắc do em copy lỗi thôi e chạy thì ko bị lỗi cú pháp mà chỉ là cái phần sự kiện lúc thì run đc lúc lại ko chả hiểu tại sao a đạt giúp vs!!!

Nguyễn Minh Dũng viết 19:05 ngày 30/09/2018

Em thử miêu tả lỗi rõ hơn cho các bạn khác xem thử. Anh không làm Java nên chắc khó giúp, mà cái quan trọng là anh không hiểu em đang hỏi cái gì

không hiểu tại sao khi em shift f6

Shift F6 là sao?

em bắt đc sự kiện và in ra có lần lại ko đc!!!

Sự kiện gì? in ra cái gì?

có phải đây là do lỗi cài phần mềm hay lỗi cài JVM hay lỗi cú pháp??? ai biết chỉ giùm em với!..

Cài phần mềm nào?
JVM hay cú pháp thì chắc chắn là không rồi. Nếu có lỗi thì không build được và không làm được gì cả.

còn đây là cái bài tập lớn em đang làm và cũng bị trường hợp tương tự ai biết sửa giùm e luôn vs

Bài tập lớn tức nó có cái tên hoặc đang muốn làm cái gì đó, em cần nêu rõ hơn

chazo1994 viết 19:16 ngày 30/09/2018

đang hỏi cái gì

Em không bị lỗi cú pháp
build SUCCESSFUL

ttrong cái code em post lên thì là chỉ để tạo ra một
frame sau đó khi em ấn nút mũi tên sang phải thì nó sẽ in ra "what the **** "

nhưng mà vấn đề là có lần thì in ra được (sự kiện được bắt)
nhưng có lần lại không mắc dù em không sửa code hay đụng gì đến nó!!!

chazo1994 viết 19:08 ngày 30/09/2018

cái project của em thì cũng bị tương tự như vậy trong khi bắt sự kiện
đây là hình project của em

em muốn ấn mũi tên sang phải thì người sẽ dịch sang phải

nhưng có lần run thì nó chạy được lần khác run nó lại ko chạy đc

Nguyễn Minh Dũng viết 19:05 ngày 30/09/2018

Anh đã sửa #1 của em. Em post lại cái project anh xem thử?

Ủa mà khoan

        public void keyPressed(KeyEvent e) {
            System.out.println("what the ****");
        }

Đoạn code này đâu có kiểm tra KeyEvent là key nào đâu?

chazo1994 viết 19:09 ngày 30/09/2018

cái đó là em chỉ đển kiếm tra khi ấn một nút thì nó sẽ in ra text thôi à!!!

project của em đây (hình như file rar ko up trực tiếp đc lên diễn đàn!

UpFile.vn

Lỗi 404 - UpFile.vn

Lỗi 404 - UpFile.vn

Minh Dương viết 19:11 ngày 30/09/2018

đẹp thế anh cái này anh tự vẽ à…nó là phần nào của java vậy anh em mới tìm hiểu về java nên chưa biết nhiều

chazo1994 viết 19:01 ngày 30/09/2018

mấy cái ảnh gõ “sheets sprite game one piece” nó ra đấy
còn map nền cũng gõ google hết đấy :)))
chuyển hết project từ netbeen sang eclips lại chạy ầm ầm @@

Bài liên quan
0