演示代码:
int[] createCircle (รัศมี int, int centerX, int centerY) {
int[] คะแนน = int ใหม่ [360 * 2];
สำหรับ (int i = 0; i <360; i ++) {
คะแนน [i*2] = centerX + (int) (รัศมี * Math.cos (Math.toRadians (i)));
คะแนน[i*2+1] = centerY + (int)(รัศมี * Math.sin(Math.toRadians(i)));
-
จุดกลับ;
-
จุด originalPosition = null;
RingShell สาธารณะ () {
จอแสดงผลสุดท้าย display = จอแสดงผลใหม่ ();
เชลล์สุดท้าย = เชลล์ใหม่ (จอแสดงผล SWT.NO_TRIM | SWT.ON_TOP);
shell.setBackground(display.getSystemColor(SWT.COLOR_DARK_MAGENTA));
ภูมิภาค ภูมิภาค = ภูมิภาคใหม่ ();
ภูมิภาค.เพิ่ม(createCircle(100, 100, 100));
ภูมิภาค.ลบ(createCircle(50, 100, 100));
shell.setRegion (ภูมิภาค);
shell.addMouseListener (MouseListener ใหม่ () {
โมฆะสาธารณะ mouseDoubleClick (MouseEvent e) {
display.ทิ้ง();
-
โมฆะสาธารณะ mouseDown (MouseEvent e) {
originalPosition = จุดใหม่ (เช่น ey);
-
โมฆะสาธารณะ mouseUp (MouseEvent e) {
ตำแหน่งเดิม = โมฆะ;
-
-
shell.addMouseMoveListener (MouseMoveListener ใหม่ () {
โมฆะสาธารณะ mouseMove (MouseEvent e) {
ถ้า (OriginalPosition == null) กลับ;
จุด point = display.map (shell, null, ex, ey);
shell.setLocation (point.x - originalPosition.x, point.y - originalPosition.y);
System.out.println("ย้ายจาก: " + originalPosition + " เป็น " + point);
-
-
สี่เหลี่ยมผืนผ้า RegionBounds = Region.getBounds();
shell.setSize(regionBounds.width,regionBounds.height);
เชลล์.เปิด();
ในขณะที่ (!shell.isDisposed()) {
ถ้า (!display.readAndDispatch()) {
display.sleep();
-
-
display.ทิ้ง();
ภูมิภาค.ทิ้ง();
-
โมฆะคงที่สาธารณะ main (String [] args) {
ใหม่ RingShell();
-
-