SWT(JFace)体验之圆环状(戒指型)_Java教程-查字典教程网
SWT(JFace)体验之圆环状(戒指型)
SWT(JFace)体验之圆环状(戒指型)
发布时间:2016-12-28 来源:查字典编辑
摘要:演示代码:复制代码代码如下:packageswt_jface.demo1;importorg.eclipse.swt.SWT;importo...

演示代码:

复制代码 代码如下:

package swt_jface.demo1;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.MouseEvent;

import org.eclipse.swt.events.MouseListener;

import org.eclipse.swt.events.MouseMoveListener;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.graphics.Region;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

public class RingShell {

int[] createCircle(int radius, int centerX, int centerY) {

int[] points = new int[360 * 2];

for(int i=0; i<360; i++) {

points[i*2] = centerX + (int)(radius * Math.cos(Math.toRadians(i)));

points[i*2+1] = centerY + (int)(radius * Math.sin(Math.toRadians(i)));

}

return points;

}

Point originalPosition = null;

public RingShell() {

final Display display = new Display();

final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);

shell.setBackground(display.getSystemColor(SWT.COLOR_DARK_MAGENTA));

Region region = new Region();

region.add(createCircle(100, 100, 100));

region.subtract(createCircle(50, 100, 100));

shell.setRegion(region);

shell.addMouseListener(new MouseListener() {

public void mouseDoubleClick(MouseEvent e) {

display.dispose();

}

public void mouseDown(MouseEvent e) {

originalPosition = new Point(e.x, e.y);

}

public void mouseUp(MouseEvent e) {

originalPosition = null;

}

});

shell.addMouseMoveListener(new MouseMoveListener() {

public void mouseMove(MouseEvent e) {

if(originalPosition == null) return;

Point point = display.map(shell, null, e.x, e.y);

shell.setLocation(point.x - originalPosition.x, point.y - originalPosition.y);

System.out.println("Moved from: " + originalPosition + " to " + point);

}

});

Rectangle regionBounds = region.getBounds();

shell.setSize(regionBounds.width, regionBounds.height);

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

display.dispose();

region.dispose();

}

public static void main(String[] args) {

new RingShell();

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类