2
我想要做的是用四個標籤繪製我的鼠標,這些標籤通過一個paintListner與盒子佈局合成,並添加到每個標籤中。此外,每個標籤都有一個MouseMoveListener,它將每個鼠標點添加到一個ArrayList。這裏是一個標籤l的代碼:在SWT中禁用組件選擇
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);
}
}
});
當我用鼠標移動標籤時,一切正常(請參閱示例圖像的頂部)。只要我按下鼠標左鍵並在繪圖時保持按下狀態,我只需在標籤上畫一個按鈕即可(請參閱示例圖像的底部)。這是因爲我通過點擊它來自動選擇標籤。是否有可能以某種方式禁用此自動選擇,並檢查是否按下鼠標左鍵?我只想在鼠標左鍵被按下時繪製。
圖片:
您是否嘗試過向每個標籤添加一個Listener到'SWT.MouseDown'並設置'event.doit = false;'?這可以阻止選擇。 – Baz
這確實沒有用。仍然是同樣的問題。我添加了以下內容: 監聽器監聽器=新監聽器(){ \t public void handleEvent(Event e){ \t e.doit = false; \t} }; l.addListener(SWT.MouseDown,listener); – Averius
你是什麼意思?「我通過點擊它自動選擇標籤」。當你說標籤獲得_selected_時,你是什麼意思? –