1

グリッド レイアウトで JLabels を使用してボックスの小さなグリッドを実装しようとしています。特定のボックスをクリックすると、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){}


}

}
4

2 に答える 2

2

グリッド レイアウトで JLabels を使用してボックスの小さなグリッドを実装しようとしています。特定のボックスをクリックすると、X 座標と Y 座標がコンソール ウィンドウに表示されるという考え方です。私はこれまでのところこれを持っており、ほとんどそこにあると思いますが、各ボックスをクリックすると、ウィンドウに間違った数字が表示されます

于 2013-10-07T07:41:16.760 に答える