私がやろうとしているのは、各ラベルに追加された、paintListner を介してボックス レイアウトを使用して合成された 4 つのラベルをマウスで描画することです。さらに、各ラベルには、すべてのマウス ポイントを ArrayList に追加する MouseMoveListener があります。1 つのラベル l のコードは次のとおりです。
l.addMouseMoveListener(new MouseMoveListener() {
public void mouseMove(MouseEvent e) {
compLocation.setLocation(l.getLocation().x, l.getLocation().y);
pointsToDraw1.get(n).add(new Point(e.x, e.y));
l.redraw();
}
});
l.addPaintListener(new PaintListener(){
@Override
public void paintControl(PaintEvent e) {
Device device = Display.getCurrent ();
Color red = new Color (device, 255, 0, 0);
e.gc.setBackground(red);
for(Point p : pointsToDraw1.get(n)){
e.gc.fillRectangle(p.x, p.y, 4, 4);
}
}
});
マウスでラベル上を移動すると、すべて正常に動作します (サンプル画像の上部を参照)。描画中にマウスの左ボタンを押したままにするとすぐに、ボタンを押し始めたラベルにのみ描画します (サンプル画像の下部を参照)。これは、ラベルをクリックして自動的に選択するためです。この自動選択を無効にして、マウスの左ボタンが押されているかどうかを確認することはできますか? 左マウスボタンが押されたときにのみ描画したい。
画像: