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

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é

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 :smiley:

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!!!

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ì :frowning:

Shift F6 là sao?

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

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ả.

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 :slight_smile:

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ó!!!

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

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?

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!

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

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 @@

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?