如何确定我在哪里点击JFrame



我正试图将国际象棋引擎作为一个有趣的项目,但为此我真的想制作一个GUI。问题是我没有这方面的经验,所以我有点停滞不前。我设法创建了董事会,但有两件事我不知道该怎么做,而在网上查找只会让我更加困惑。

  1. 如何根据板在计算机内存中的外观将块添加到板中。(例如,如果引擎移动,我希望移动也发生在gui上,我将如何将两者链接起来?(

  2. 如何计算用户在gui中单击的是哪个方块?

这是我迄今为止为gui编写的代码,不多,但它是诚实的工作

private final JFrame gameFrame;
    private Board board;
    public Table() {
        this.board = new Board();
        this.gameFrame = new JFrame("Chess");
        this.gameFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.gameFrame.setSize(527, 550);
        JPanel panel = new JPanel() {
            @Override
            public void paint(Graphics g) {
                boolean white = true;
                for (int i = 0; i < 8; i++) {
                    for (int j = 0; j < 8; j++) {
                        if (white) {
                            g.setColor(new Color(240, 217, 181));
                        }
                        else {
                            g.setColor(new Color(181, 136, 99));
                        }
                        g.fillRect(j * 64, i * 64, 64, 64);
                        white = !white;
                    }
                    white = !white;
                }
            }
        };
        this.gameFrame.add(panel);
        this.gameFrame.setVisible(true);
    }

我知道我可能会问一些答案复杂的问题,但我只是在寻找一些我可以查找的东西或一些大致的方向

一种可能也是最有用的方法是实现mouseListener,然后从其中一个方法获取x y位置。

  • 编写一个类来扩展MouseAdapter
  • 重写所需的空方法
  • 则经由CCD_ 4(并且可能经由addMouseMotionListener(将该类的实例添加到帧

然后,当你用鼠标做一些动作时,你可以从MouseEvent.中获得坐标。在每个方法中放入一些打印语句有助于观察发生了什么(什么方法处理鼠标移动(。

以上内容将用于演示该过程。但稍后您应该在JPanel上添加侦听器,并将JPanel添加到帧中。

相关内容

  • 没有找到相关文章

最新更新