广

Java编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    SWT(JFace)体验之圆环状(戒指型)

    2018-11-02 13:12:39 次阅读 稿源:互联网
    零七广告
    演示代码:
    代码如下:

    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();
    }
    }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告