-1
嗨即時製作一個小程序,可以在畫布內製作線條,圓形,正方形和三角形。所有這些都帶有一個GC事件和兩個點(Sx,Sy)和(Ex,Ey)。當我點擊畫布內部並拖動一條線時,事件就會發生變化。它使得在起點和終點之間選擇幾何圖形。所有想到當我嘗試更新並向右或向左移動10個像素時,通過單擊按鈕,我需要發送一個不爲null的事件或讓事件在畫布上繪製。這裏有一些代碼。我將所有SX SY EX和EY作爲全局變量。製作一個事件變量在畫布上畫一條線
canvas.addListener(SWT.MouseDown, new Listener() {
@Override
public void handleEvent(Event event) {
SX = event.x;
SY = event.y;
textSX.setText(Integer.toString(SX));
textSY.setText(Integer.toString(SY));
drag = true;
}
});
canvas.addListener(SWT.MouseUp, new Listener() {
@Override
public void handleEvent(Event event) {
EX = event.x;
EY = event.y;
drag = false;
}
});
canvas.addListener(SWT.MouseMove, new Listener() {
@Override
public void handleEvent(Event event) {
if(drag)
{
EX = event.x;
EY = event.y;
textEX.setText(Integer.toString(EX));
textEY.setText(Integer.toString(EY));
canvas.redraw();
}
}
});
canvas.addListener(SWT.Paint, new Listener() {
@Override
public void handleEvent(Event event) {
if(drag)
{
if(btnLinea.getSelection()){
gc = event.gc;
crearLinea(SX,SY,EX,EY,gc);
}
if(btnCirculo.getSelection()){
gc = event.gc;
crearCirculo(SX,SY,EX,EY,gc);
}
if(btnCuadrado.getSelection()){
gc = event.gc;
crearCuadro(SX,SY,EX,EY,gc);
}
if(btnTriangulo.getSelection()){
gc = event.gc;
crearTriangulo(SX,SY,EX,EY,gc);
}
}
}
});
MasX.addListener(SWT.Selection, new Listener(){
public void handleEvent(Event event) {
SX += 10;
EX += 10;
System.out.println(SX+" "+SY+" "+EX+" "+EY);
//canvas.redraw();
System.out.println("Aqui 2");
//gc.drawLine(SX, SY, EX, EY);
crearLinea(SX,SY,EX,EY,gc);
}
});
如果有什麼不明確的地方,請這樣問:D感謝您的幫助。