Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 网格X和Y坐标中的可单击JLabel?_Java_Swing_Mouseevent_Jlabel - Fatal编程技术网

Java 网格X和Y坐标中的可单击JLabel?

Java 网格X和Y坐标中的可单击JLabel?,java,swing,mouseevent,jlabel,Java,Swing,Mouseevent,Jlabel,我正在尝试在网格布局中使用jlabel实现一个小的盒子网格。 其思想是,当您单击特定框时,X和Y坐标将显示在控制台窗口中。到目前为止,我有这个,我相信它几乎就在那里,但是当我点击每个框时,错误的数字出现在窗口中。例如,当我点击应为0,0的框时,它会给我16,17。。。???任何帮助都会很好!谢谢 import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.M

我正在尝试在网格布局中使用jlabel实现一个小的盒子网格。 其思想是,当您单击特定框时,X和Y坐标将显示在控制台窗口中。到目前为止,我有这个,我相信它几乎就在那里,但是当我点击每个框时,错误的数字出现在窗口中。例如,当我点击应为0,0的框时,它会给我16,17。。。???任何帮助都会很好!谢谢

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;


public class GridPanel extends JPanel{

private final int HEIGHT = 7;
private final int WIDTH = 12;
private final int TOTAL_BOXES = HEIGHT * WIDTH;
JLabel box[];

public GridPanel()
{
    setLayout(new GridLayout(7,12));


     box = new JLabel[TOTAL_BOXES];

        for (int x = 0;x<box.length;x++){

            box[x] = new JLabel("");
            box[x].setOpaque(true);
            box[x].setPreferredSize(new Dimension(30,30));
            box[x].setBackground(Color.white);
            box[x].setBorder(BorderFactory.createLineBorder(Color.black));
            box[x].addMouseListener(new mListener());
        }


        for (int x = 0;x<box.length;x++)
            add(box[x]);

}


private class mListener implements MouseListener
{

    public void mouseClicked(MouseEvent box)
    {
        int x = box.getX();
        int y = box.getY();
        System.out.println(x +"," + y);
    }

    public void mousePressed (MouseEvent e){}
    public void mouseExited (MouseEvent e){}
    public void mouseReleased (MouseEvent e){}
    public void mouseEntered (MouseEvent e){}


}

}
我正在尝试在网格中使用jlabel实现一个小的盒子网格 布局这个想法是,当你点击一个特定的框时,X和Y 坐标显示在控制台窗口上。到目前为止,我有这个 我相信它就快到了,但是当我点击每个框的时候 窗口中出现错误的号码

最简单的方法就是使用

举例说明

我正在尝试在网格中使用jlabel实现一个小的盒子网格 布局这个想法是,当你点击一个特定的框时,X和Y 坐标显示在控制台窗口上。到目前为止,我有这个 我相信它就快到了,但是当我点击每个框的时候 窗口中出现错误的号码

最简单的方法就是使用

举例说明


您将希望在for循环中遍历JLabel数组,以查找已按下标签的索引号。然后使用该索引编号以及一些简单的数学模型和整数除法(使用网格维度)计算出正确的网格位置。

您将希望在for循环中遍历JLabel数组,以找到按下标签的索引编号。然后使用该索引号和一些简单的数学模型,并使用网格维度进行整数除法,以确定正确的网格位置