当前位置: 首页 > 知识库问答 >
问题:

我如何确定我在JFrame上点击的位置?

柴丰
2023-03-14

我正在尝试将国际象棋引擎作为一个有趣的项目,但为此我真的很想制作一个GUI。问题是我没有这方面的经验,所以我有点卡住了。我设法创建了棋盘,但有两件事我不知道如何做,在网上看只会让我更加困惑。

>

  • 如何根据电路板在计算机内存中的外观,将这些块添加到电路板中。(例如,如果引擎进行了移动,我希望该移动也发生在gui上,我将如何将两者联系起来?)

    我如何判断用户在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);
        }
    

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

  • 共有1个答案

    向弘懿
    2023-03-14

    一种可能也是最有用的方法是实现鼠标侦听器,然后从其中一种方法中获取x y位置。

    • 编写一个类来扩展MouseAdapter

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

    上面将用于演示这个过程。但稍后您应该实际上将侦听器添加到JGroup上,并将JGroup添加到框架中。

     类似资料:
    • 问题内容: 我给了我的JFrame窗口一个带有圆角的自定义形状,但是如何使它平滑(抗锯齿) 问题答案: 呈现内容的方式将有很多,但是基本概念是为要绘制的Graphics上下文提供呈现提示。 例如,如果我要绘画组件,则可能会使用类似…的方法。 查看控制渲染质量以获取更多详细信息 更新了示例 更新了新示例 我使用的技巧之一是,不使用“ setShape”,而是简单地创建一个透明窗口,并使用自定义面板为

    • 我正在尝试动画图标在我的应用程序每当它是被点击。我实现了我想要的简单动画,但它总是动画一次后,我来到那个屏幕。我希望每次点击时,它都应该是动画,并且它应该顺时针旋转,持续时间为2秒,当再次按下时,它应该逆时针旋转,持续时间为2秒。请帮帮我 这里是代码的部分-

    • 在我的应用程序中,我有一个按钮,它从数据库中提取经度和纬度,并将它们存储到一个名为bgworker的类中的两个变量中,然后这些变量显示在屏幕上,如下所示:https://I.imgur.com/5ld231v.png 然后将变量与代码一起发送到Google Maps片段: 然而,地图片段本身从不更新,坐标总是设置为0,0我如何更新我的地图上的位置,每当变量更新(这是在单击按钮) 我遇到的两个问题是

    • 问题内容: 我需要一种方法,可以从shell内告诉shell处于哪种模式。 我尝试查看平台模块,但似乎只告诉您“有关可执行程序所使用的位架构和链接格式”的信息:尽管二进制文件编译为64位(我在OS X 10.6上运行),所以即使我使用此处介绍的方法强制使用32位模式,它似乎总是报告64 位。 问题答案: 更新:一种方法是看作为记录在这里: 是Python 2.6中引入的。如果你需要针对较旧系统的测

    • 问题内容: 我需要绘制一个水平直方图,并且按如下所示设置直方图的标签, 有人能找出这里有什么问题吗? 为什么不显示其他标签? 问题答案: 这个问题的答案的问题是,你不应该使用(这在JFrame默认情况下使用),而是使用GridLayout。这样 您就可以将添加到。一个示例如下所示:

    • 我需要一个帮助来定位一个JPanel在一个特定的位置到一个Jframe。 我在一个扩展JFrame的类中有一个JPanel,我需要将这个JPanel放在一个特定的x,y位置。 是这样的: 我不需要一个LayoutManager的位置的JPanel,因为我需要把JPanel在一个特定的位置(像150,150的例子)。但是如果我panel.set位置(150,150),就像上面的代码一样,什么都不会发