Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让Jframe通过鼠标点击工作?_Java_Swing_Jframe_Mouselistener_Gridworld - Fatal编程技术网

Java 如何让Jframe通过鼠标点击工作?

Java 如何让Jframe通过鼠标点击工作?,java,swing,jframe,mouselistener,gridworld,Java,Swing,Jframe,Mouselistener,Gridworld,如果你熟悉的话,我正在制作一个gridworld中的connect four游戏,但是我的老师绝对没有告诉我们关于鼠标点击的任何内容,并且connect four需要放在我点击的专栏中,但是我不知道要添加什么鼠标侦听器,所以我制作了一个Jframe来完成它,但是我无法让它工作 因此,我需要知道如何使鼠标单击能够打印单击的x和y坐标 公共类ConnectFourWorld扩展世界实现MouseListener { 私人字符串whostrn; 私有布尔gameOver; 私人弦乐冠军; 件X=新件(

如果你熟悉的话,我正在制作一个gridworld中的connect four游戏,但是我的老师绝对没有告诉我们关于鼠标点击的任何内容,并且connect four需要放在我点击的专栏中,但是我不知道要添加什么鼠标侦听器,所以我制作了一个Jframe来完成它,但是我无法让它工作

因此,我需要知道如何使鼠标单击能够打印单击的x和y坐标

公共类ConnectFourWorld扩展世界实现MouseListener
{
私人字符串whostrn;
私有布尔gameOver;
私人弦乐冠军;
件X=新件(“ex”,颜色为白色,颜色为红色);
作品O=新作品(“哦”,颜色。黄色,颜色。蓝色);
位置列1=新位置(5,0);
位置栏2=新位置(5,1);
位置栏3=新位置(5,2);
位置列4=新位置(5,3);
位置列5=新位置(5,4);
位置列6=新位置(5,5);
位置列7=新位置(5,6);
公共世界()
{
超级(新边界网格(6,7));
JFrame=新JFrame();
框架设置尺寸(新尺寸(350300));
frame.addMouseListener((MouseListener)this);
frame.pack();
frame.setVisible(true);
winner=“无赢家”;
whosurn=“X”;
gameOver=false;
setMessage(“欢迎连接四个世界!-点击一个点-”+Whostrn+“,轮到你了”);
}
公共布尔位置单击(位置loc)
{
Grid Grid=getGrid();
if(grid==null)
返回false;
ArrayList reset=新的ArrayList();
reset=grid.getOccupiedLocations();
if(grid.get(loc)!=null)
返回false;
如果(gameOver==true)
{
对于(int i=0;i添加鼠标侦听器

        addMouseListener(new MouseListener() {

        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mousePressed(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseClicked(MouseEvent arg0) {
            System.out.println(arg0.getLocationOnScreen().x);
            System.out.println(arg0.getLocationOnScreen().y);
        }
    });

您必须覆盖GridWorld GUIController类..在构造函数中有一个名为display.addMouseListener()的方法。基本上只需在其中编写代码即可。我相信它们会将您单击的位置存储在变量loc中。知道后非常容易。要获取对象,只需执行parentFrame.getWorld().getGrid().get(loc)…非常直截了当…希望这会有帮助!

你几乎已经问过这个问题。一个简单的问题就足够了。你的示例显示了一个附有鼠标器的框架,但似乎这并不是你的游戏的实际附件。世界是什么?我讨厌老师希望你阅读java文档和java教程World在gridworld案例研究中,它只是一个生成BoundedGrid或UnboundGrid的类。您可以在线查找它。我尝试过这样做,但在最后一行添加“EnumBody”时出错。
        addMouseListener(new MouseListener() {

        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mousePressed(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseClicked(MouseEvent arg0) {
            System.out.println(arg0.getLocationOnScreen().x);
            System.out.println(arg0.getLocationOnScreen().y);
        }
    });