手机
当前位置:查字典教程网 >编程开发 >Java >SWT(JFace)体验之圆环状(戒指型)
SWT(JFace)体验之圆环状(戒指型)
摘要:演示代码:复制代码代码如下: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();

}

}

【SWT(JFace)体验之圆环状(戒指型)】相关文章:

java字符串切割实例学习(获取文件名)

基于Java回顾之I/O的使用详解

java使double保留两位小数的多方法 java保留两位小数

java 使用线程做的一个简单的ATM存取款实例代码

如何用java生成指定范围的随机数

AndroidHttpClient使用Cookie应用分析

Hibernate一对多关联双向关联代码实现分享

Java邮件发送程序(可以同时发给多个地址、可以带附件)

浅析java volatitle 多线程问题

深入解析Java中volatile关键字的作用

精品推荐
分类导航