`

SWT display wave显示波形

 
阅读更多
package plug_in_test;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.graphics.GC;

public class TstDrawDisplay2 {
	
	/*
	 * wave #1
	 * **********************************************
	 *   /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /
	 *  /  \/  \/  \/  \/  \/  \/  \/  \/  \/  \/  \/
	 * **********************************************
	 */
	private static int[] wave1_data = new int[]{-100, 0, 100, 0, };
	/*
	 * wave #2
	 * **********************************************
	 *    _     _     _     _     _     _     _     _
	 *   / \   / \   / \   / \   / \   / \   / \   /
	 *  /   \_/   \_/   \_/   \_/   \_/   \_/   \_/  
	 * **********************************************
	 */
	private static int[] wave2_data = new int[]{-100, 0, 100, 100, 0, -100 };
	/*
	 * wave #3
	 * **********************************************
	 *     _       _       _       _       _       _  
	 *   _/ \_   _/ \_   _/ \_   _/ \_   _/ \_   _/ \_
	 *  /     \_/     \_/     \_/     \_/     \_/     \
	 * **********************************************
	 */
	private static int[] wave3_data = new int[]{-100, 0, 0, 100, 100, 0, 0, -100, -100, 0, 0, 100, 100, 0, 0, -100,};
	/*
	 * wave #4
	 * **********************************************
	 *     /\          /\          /\          /\
	 *    /  \    /\  /  \    /\  /  \    /\  /  \
	 *   /    \  /  \/    \  /  \/    \  /  \/    \  /  
	 *  /      \/          \/          \/          \/  
	 * **********************************************
	 */
	private static int[] wave4_data = new int[]{-200, -100, 0, 100, 200, 100, 0, -100, -200, -100, 0, 100, 0, -100, 0, 100, 200, 100, 0, -100 };

	private static int timerCounter = 0;

	public static void main(String[] args) {
		final Display display = new Display();
		final Shell shell = new Shell(display);

		shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
		
		shell.addPaintListener(new PaintListener() {

			public void paintControl(PaintEvent e) {

				GC gc = e.gc;

				int x = e.x, y = e.y, width = e.width, height = e.height;

				/*
				 * draw x axis.
				 */
				gc.setLineWidth(3);
				gc.setForeground(display.getSystemColor(SWT.COLOR_YELLOW));
				gc.drawLine(x, y + height/2, x + width, y + height/2);

				/*
				 * draw x coordinate.
				 */
				gc.setLineWidth(1);
				gc.setLineStyle(SWT.LINE_DOT);
				gc.setForeground(display.getSystemColor(SWT.COLOR_DARK_YELLOW));
				for (int i = 0 ; (y + height/2 - 40*i) > y ; i++) {
					gc.drawLine(x, y + height/2 - 40*i, x + width, y + height/2 - 40*i);
					gc.drawLine(x, y + height/2 + 40*i, x + width, y + height/2 + 40*i);

				}

				/*
				 * draw y coordinate.
				 */

				int xSum=0;
				for (int i = 0; i*60 < width; i++) {
					gc.drawLine(x+60*i, y, x+60*i, y + height);
					xSum = i;
				}

				/*
				 * draw y axis
				 */
				gc.setLineWidth(3);
				gc.setForeground(display.getSystemColor(SWT.COLOR_YELLOW));
				gc.drawLine(x+60*(xSum/2+1), y, x+60*(xSum/2+1), y + height);


				/*
				 * draw wave
				 */
				gc.setLineWidth(3);
				gc.setLineStyle(SWT.LINE_SOLID);
				gc.setForeground(display.getSystemColor(SWT.COLOR_GREEN));

				gc.drawPolyline(getWave(xSum, x, y, height, wave1_data));
//				gc.drawPolyline(getWave(xSum, x, y, height, wave2_data));
//				gc.drawPolyline(getWave(xSum, x, y, height, wave3_data));
				gc.drawPolyline(getWave(xSum, x, y, height, wave4_data));
				
			
			}

			private int[] getWave(int xSum, int x, int y, int height, int[] wave_data) {
				List<Integer> list = new ArrayList<Integer>();
				for(int i = 0; i <= xSum + 1; i++) {
					list.add(0);
					list.add(0);
				}

				for(int i = 0; i <= xSum + 1; i++) {
					list.set(2*i, x+60*i);
				}
				
				int wave_start_index = timerCounter % (wave_data.length);
				for(int i = 0; i <= xSum + 1; i++) {
					list.set(2*i+1, y + height/2 + wave_data[(wave_start_index+i) % wave_data.length]);
				}

				int[] points = new int[list.size()];
				for(int i = 0 ; i < points.length; i++)
					points[i] = list.get(i);
				return points;
			}
			
		});

		Timer timer = new Timer(true);
		timer.schedule(new TimerTask() {
			public void run() {
				timerCounter ++;
				display.syncExec(new Runnable() {
					public void run() {
						if ( null != shell && !shell.isDisposed() )
							shell.redraw();
					}
				});
			}

		}, 200, 300);

		shell.setSize(600, 500);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) display.sleep();
		}
		display.dispose();
	}


}

 

 



 

  • 大小: 13.6 KB
分享到:
评论

相关推荐

    java swt 隐藏和显示任务栏图标和托盘图标(2)

    本文将深入探讨如何使用SWT在Java中隐藏和显示任务栏图标以及托盘图标。 首先,我们需要理解SWT中的`Display`和`Shell`概念。`Display`是应用程序的主要窗口,而`Shell`则是用户与应用交互的窗口。在SWT中,`Shell`...

    *此源码已更新并重新上传java swt 隐藏和显示任务栏图标和托盘图标

    在给定的资源中,我们关注的是如何使用SWT来实现任务栏图标和托盘图标的隐藏与显示功能。以下是相关的知识点详解: 1. **Java SWT**: SWT(Standard Widget Toolkit)是由Eclipse基金会开发的一个开源库,它允许...

    swt 隐藏显示任务栏核心

    SWT 3.0 开始引入了 Tray,可以在系统栏放置你的程序图标了 本程序实现的功能有四: * 1. 点击窗口的最小化或关闭按钮都是隐藏窗口--任务栏里不显示,不退出程序 * 2. 窗口隐藏时,任务栏无图标,系统栏有图标;...

    swt教程 有关SWT怎么应用

    4. **编写代码**:创建一个新的Java类,例如HelloSWT.java,导入必要的SWT包,然后编写显示GUI组件的代码。 以下是一个简单的SWT程序示例: ```java package edu.ch4; import org.eclipse.swt.SWT; import org....

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    如果一切正常,运行此程序应该能够成功显示一个空窗口。 #### 三、配置注意事项 - **Classpath变量**:如果计划开发多个使用SWT的项目,建议创建一个Classpath变量指向`swt.jar`的位置,以便在不同项目中重用。 - ...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    标题“swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位”表明这个压缩包包含了适用于64位Windows操作系统的SWT库。描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是...

    swt工具文档 swt工具文档

    2. **Display**: Display是所有SWT组件的顶级容器,它是应用程序的主要窗口。所有的Widget都需要在Display中创建并显示。 3. **Shell**: Shell是Display的子类,是GUI中的顶级窗口。应用程序通常只有一个Display,...

    swt资源释放问题

    SWT 资源释放问题详解 SWT(Standard Widget Toolkit)是一种基于 Java 的 GUI 工具包,提供了丰富的图形用户界面...Display 实例的释放、事件队列和事件循环、图形资源释放都是 SWT 资源释放问题的重要组成部分。

    swt小技巧,SWT的SHELL样式

    Shell dialogShell = new Shell(display, SWT.APPLICATION_MODAL | SWT.TITLE | SWT.CLOSE); dialogShell.setText("示例对话框"); dialogShell.open(); while (!dialogShell.isDisposed()) { if (!display....

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的...通过以上步骤,我们可以在 SWT Table 控件中成功实现文本的换行显示。这种方式不仅灵活,而且可以很好地适应不同的场景需求。

    swt-jface入门

    创建一个基本的SWT程序通常涉及导入必要的SWT库,然后创建Display和Shell对象。Display是SWT中用于管理窗口系统的对象,而Shell则代表应用程序的主要窗口。以下是一个简单的SWT "Hello world"程序示例: ```java ...

    swt的简单代码

    4. Display与Shell:在SWT中,Display是整个GUI的顶级容器,所有的窗口(Shell)都必须在Display上创建。Shell代表应用程序的窗口,它是其他组件的容器。 5. SWT与JFace:JFace是建立在SWT之上的一层抽象,提供了...

    java SWT教程

    import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.graphics.*; public class HelloSWT { public static void main...

    SWT_全接触 SWT_全接触 SWT_全接触

    1. **Display**:Display是SWT中最顶层的容器组件,它负责与底层窗口系统之间的通信。在大多数情况下,一个应用程序只需要一个Display实例。 2. **Shell**:Shell是一个窗口组件,它可以包含其他的Composite和...

    SWT开发教程1

    import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Button; public class SWTExample { public static void main(String[] args) { Display ...

    swt线程冲突与解决

    - 在SWT中,可以使用`Display.syncExec(Runnable)`方法来实现同步调用。 - 这种方式适用于需要等待UI操作完成并获取结果的场景。 ```java Display.getDefault().syncExec(new Runnable() { @Override public ...

    SWT源码 swt.jar

    SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...

    SWT创建Shell窗口

    这里的`Display`对象代表了整个应用程序的显示环境。 3. 设置Shell属性:我们可以设置Shell的一些属性,如大小、位置和标题。例如: ```java shell.setSize(400, 300); // 设置窗口大小为400x300像素 shell.setText...

    swt 组件介绍

    ### SWT组件介绍 #### 概述 SWT(Standard Widget Toolkit)是一种用于构建Java桌面应用程序的工具包。它提供了一套跨平台的图形用户界面组件,使得开发者能够创建出高性能且外观与本地操作系统一致的应用程序。本...

    SWT 弹出对话框 可以选择的图标种类

    在SWT中,`MessageBox`是一个用于显示简单的消息对话框的类,通常用来向用户显示警告、确认信息或者获取用户的基本响应。这个对话框可以根据需要设置不同的图标和按钮。 在描述中提到的例子中,`MessageBox`被创建...

Global site tag (gtag.js) - Google Analytics