マウスをクリックして保持して移動すると、ボックスが赤くなります(基本的にグリッドを塗りたい)。私は以下のコードを持っています。私はマウスをドラッグします。 MouseDraggedメソッドは適切に呼び出されますが、1つのボックスだけが赤色になり、その後ドラッグしても何も起こりません(メソッドはまだ呼び出されますが)。何か案は ?私ははっきりしていたと思う。おかげMouseListener MouseDraggedは期待どおりに動作しません
public static class DragListener implements MouseMotionListener
{
@Override
public void mouseDragged(MouseEvent me) {
JPanel current =(JPanel)me.getSource();
current.setBackground(Color.RED);
}
}
これは、グリッドの定義です:
public static class GridPane extends JPanel {
public GridPane(int row, int col) {
int count = 0 ;
setLayout(new GridLayout(row, col));
setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
for (int i = 1; i <= (row * col); i++) {
JPanel lab = new JPanel();
lab.setEnabled(true);
lab.setBackground(Color.WHITE);
lab.setPreferredSize(new Dimension(3, 3));
lab.setBorder(BorderFactory.createLineBorder(Color.BLACK));
lab.addMouseMotionListener(new DragListener());
lab.addMouseListener(new ClickListener());
lab.setName(count+"");
++count;
add(lab);
}
}
}
は、あなただけの位置を追跡して、マウスが赤に上であることをグリッドにボックスを設定する必要があります。私は、マウスの左ボタンを押したときに更新されたマウスの位置ではなく、マウスをクリックしたときの最初のマウスの位置をとっていることを推測しています。 – theDazzler
これは有効なポイントです。ありがとう。どのように私はそれを行うことができます上の任意のヒント?つまり、マウスの位置を追跡しますか? – Cemre
すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –