Java 如何使用鼠标听筒?要移动按钮吗?

Java 如何使用鼠标听筒?要移动按钮吗?,java,swing,jframe,jbutton,keylistener,Java,Swing,Jframe,Jbutton,Keylistener,我目前正在做一个小型棋盘游戏。我必须在按钮阵列上放置“对象”。我想放置的对象是1*1*2等,它们由禁用的按钮表示。有没有什么方法可以让我的键盘监听器移动生成的禁用按钮,因为我无法让它工作 public GuiP1() { super(); Panel.setLayout(null); this.add(Panel); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Ba

我目前正在做一个小型棋盘游戏。我必须在按钮阵列上放置“对象”。我想放置的对象是1*1*2等,它们由禁用的按钮表示。有没有什么方法可以让我的键盘监听器移动生成的禁用按钮,因为我无法让它工作

public GuiP1() {
    super();
    Panel.setLayout(null);
    this.add(Panel);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("BattleshipsP1");
    this.setSize(640, 1000);
    this.setVisible(false);
    this.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent arg0) {
        }
        public void keyReleased(KeyEvent arg0) {

            if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) {
                System.out.println("VK_RIGHT");
            } else if (arg0.getKeyCode() == KeyEvent.VK_LEFT) {
                System.out.println("VK_LEFT");
            } else if (arg0.getKeyCode() == KeyEvent.VK_UP) {
                System.out.println("VK_UP");
            } else if (arg0.getKeyCode() == KeyEvent.VK_DOWN) {
                System.out.println("VK_DOWN");
            }
        }
        public void keyTyped(KeyEvent arg0) {
        }
    });
    Grid();
    this.setVisible(true);
}
它听不到按键的声音


谢谢JFluX,您的KeyListener无法工作,因为收听的组件必须是可聚焦的,并且必须具有焦点才能工作。一个混乱的解决方案是通过

  • 通过
    setFocusable(true)
  • 通过
    requestFocusInWindow()
  • 通过调用
    setFocusable(false)
    使添加的组件不可聚焦

一个更好的解决方案是使用与组件焦点关系不那么密切的组件。

是的,你可以,但魔鬼在细节中,你的GUI和代码的细节,你需要与我们分享的东西。您将使用MouseAdapater并将其添加为MouseListener和MouseMotionListener。请将任何代码显示为对原始问题的编辑,因为正如您所看到的,代码在注释中的格式不好。此外,评论通常不会被阅读,因此问题的关键部分应该在实际的原始问题中。如果你能发布一个可运行的——不是你的整个程序,也不是一个代码链接,而是一个向我们展示你的问题的新的小程序——最好检查一下链接。另外,请看一下这个。你可能会从他们那里得到一些不错的想法。等等,我现在很困惑——我们是用鼠标还是用按键侦听器?我无法让鼠标侦听器工作,所以我开始尝试一个按键侦听器,它也不工作,所以我不知道我能做什么或能做什么。。。