`
yianpuodiaotu
  • 浏览: 240284 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

通过事件驱动,创建不同的部件

阅读更多

非常easy的东西,就是先dispose再create。

 

写出来的主要是看看大家有没有更好的实现方法

 

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
 * 该程序目的:通过事件驱动,简单演示动态创建组件。
 * 选择“是”的时候:供选择的是下拉框
 * 选择“否”的时候:是进行具体的文本配置
 * @author Administrator
 */
public class MyComposite {

	private  Button useOutSourceButton;
	private  Button newSourceButton;
	private  Composite dbSourceComposite;
	private  Shell shell;

	/**
	 * 主程序
	 * @param args
	 */
	public static void main(String[] args) {
		MyComposite myComposite = new MyComposite();

		myComposite.open();
	}

	/**
	 * shell
	 */
	private void open() {
		Display display = Display.getDefault();
		shell = new Shell(display);
		shell.setText("组件替换测试");
		shell.setSize(400, 200);
		shell.setLayout(new GridLayout(3, false));

		final Label label = new Label(shell, SWT.NONE);
		label.setLayoutData(new GridData(100, SWT.DEFAULT));
		label.setText("使用数据库资源");

		useOutSourceButton = new Button(shell, SWT.RADIO);
		useOutSourceButton.setText("是");
		newSourceButton = new Button(shell, SWT.RADIO);
		newSourceButton.setText("否");

		dbSourceComposite = new Composite(shell, SWT.NONE);
		dbSourceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,true, false,3,1));
		dbSourceComposite.setLayout(new GridLayout(3,false));

		createInnerListeners();

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

	}

	/**
	 * 事件监听器
	 */
	protected void createInnerListeners() {
		useOutSourceButton.addSelectionListener(new SelectionListener() {
			public void widgetSelected(SelectionEvent e) {
				Button btn = (Button) e.getSource();
				if (btn.getSelection()) {
					initSelectDBSourceUI(dbSourceComposite);
				}
			}

			public void widgetDefaultSelected(SelectionEvent e) {
			}
		});
		newSourceButton.addSelectionListener(new SelectionListener() {
			public void widgetSelected(SelectionEvent e) {
				Button btn = (Button) e.getSource();
				if (btn.getSelection()) {
					initConfigDBSourceUI(dbSourceComposite);
				}
			}

			public void widgetDefaultSelected(SelectionEvent e) {
			}
		});
	}

	/**
	 * 创建部件组1
	 * @param composite
	 */
	private void initConfigDBSourceUI(final Composite composite) {
		this.disposedComposite(composite);
		Text configureText = new Text(composite, SWT.BORDER);
		configureText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
				false));
		configureText.setEditable(false);
		Button configureButton = new Button(composite, SWT.NONE);
		configureButton.setText("配置");
		Button resetButton = new Button(composite, SWT.NONE);
		resetButton.setText("重置");
		shell.layout(true, true);
	}

	/**
	 * 创建部件组2
	 * @param composite
	 */
	private void initSelectDBSourceUI(final Composite composite) {
		this.disposedComposite(composite);
		Label dbTypeLabel = new Label(composite, SWT.NONE);
		dbTypeLabel.setText("数据库资源名称");
		dbTypeLabel.setLayoutData(new GridData(100, SWT.DEFAULT));
		dbTypeLabel.setToolTipText("选择已有数据库资源");

		CCombo dbCombo = new CCombo(composite, SWT.BORDER);
		dbCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
		dbCombo.setEditable(false);

		Button resetButton = new Button(composite, SWT.NONE);
		resetButton.setText("重置");
		shell.layout(true, true);
	}
	
	/**
	 * 销毁原有部件
	 * @param composite
	 */
	private void disposedComposite(Composite composite) {
		Control[] arrays = composite.getChildren();
		for (Control control : arrays) {
			if (control != null)
				control.dispose();
		}
	}
}

 

 效果图:



 

 

  • 大小: 15.2 KB
  • 大小: 14.9 KB
分享到:
评论

相关推荐

    易语言源码动态创建编辑框组件.7z

    总结来说,易语言源码动态创建编辑框组件涉及的主要知识点包括:易语言编程基础、组件创建与管理、事件驱动编程、窗口部件属性设置以及用户交互处理。通过学习和实践这些内容,开发者可以掌握易语言中动态创建和管理...

    西门子系统部件及尺寸资料

    在硬件说明中,提到了驱动器部件以及个人计算机的调试软件安装和配置,说明了如何连接调试软件以及系统各部件的连接。特别指出,Sinamics S120驱动器与828D系统的连接方式,包括书本型和Combi一体型驱动器的连接总图...

    震旦主板驱动震旦主板驱动震旦主板驱动震旦主板驱动

    【压缩包子文件的文件名称列表】:虽然给出的列表是“新建文件夹”,这通常表示压缩包内可能包含一个未命名或新创建的文件夹,里面可能存放了各种主板驱动程序。通常,驱动程序包会按照硬件类别(如音频驱动、网卡...

    HP Proliant Microserver Gen8 WIN2008R2 WIN7阵列卡驱动下载

    2. 创建驱动介质:将下载的驱动程序文件解压,然后复制到USB闪存盘或制作成光盘,供系统安装时使用。 3. 安装系统:启动服务器,进入BIOS设置,确保从合适的介质启动,开始安装操作系统。 4. 装载驱动:在系统安装...

    编写一个ALSA驱动(中文)

    该架构支持广泛的硬件设备,并提供了丰富的软件接口,使得开发者能够轻松地为不同类型的音频设备编写驱动程序。 #### 二、ALSA驱动程序开发环境 1. **基础知识**: - 需要有扎实的C语言基础。 - 对Linux内核有...

    win2000驱动程序设计指南

    常见的驱动程序设计问题 <br>第1部分 图形驱动程序 第2部分 显示器及视频微端口驱动程序 第3部分 打印机驱动程序及假脱机打印部件 <br>第五卷 网络驱动程序设计指南 1 第一部分 网络驱动程序 2 第...

    Linux平台下IPMI驱动程序实现.pdf

    驱动程序接到命令后将信息挂载到消息队列中,并在BMC空闲的时候通过不同的硬件接口(KCS、BT、SMIC)或直接通过IPMB总线将命令发送给BMC。当驱动程序侦测到有BMC的回复到达时,便将回复转发给应用程序。应用程序通过...

    PCI设备卡的Linux驱动程序设计.pdf

    具体来说,作者们介绍了如何创建一个字符设备文件,指定主设备号为254,次设备号为0,并通过命令`mknod`来创建设备节点。此外,还详细讨论了如何在驱动程序初始化过程中注册驱动程序,并在退出时注销。 #### 六、...

    MicroPython 驱动各类传感器和模块的示例代码与驱动.zip

    通过结合不同的传感器和模块,可以构建出各种创新的应用,如智能家居控制系统、环境监测系统、移动机器人等。这些示例代码不仅可以帮助初学者快速入门,也为经验丰富的开发者提供了灵感和参考。 总的来说,这个...

    易语言取驱动器列表模块演示例程

    这涉及到窗口部件的创建、事件处理以及用户交互。 6. **错误处理**:为了提高程序的健壮性,开发者通常会在代码中加入错误处理机制,如“如果...则”语句,来捕获并处理可能出现的异常情况,比如没有可用驱动器时的...

    ibm 3650M4 主板驱动

    2. **创建启动盘**:如果服务器尚无操作系统,可能需要通过USB启动盘或光盘进行驱动安装。将驱动程序文件复制到启动媒体上,以便在安装系统过程中加载驱动。 3. **安装操作系统**:根据Windows 2008的安装指南进行...

    Android小部件AppWidget-IT计算机-毕业设计.zip

    在毕业设计中,学习Android小部件AppWidget的开发可以帮助理解Android系统的组件模型和事件驱动机制,同时锻炼到实际应用开发的能力。通过分析和实现源码,可以深入理解AppWidget的工作原理及其与其他组件的交互方式...

    EPLAN欧姆龙部件宏

    欧姆龙变频器是电力驱动系统的重要组成部分,主要用于调节电机速度,以满足不同工况下的性能需求。在EPLAN欧姆龙部件宏中,你会找到各种型号的变频器宏,包括详细的电气符号,如输入/输出端子、控制信号、故障指示等...

    易语言动态创建滑块条.rar

    易语言是一种专为初学者设计的编程语言,它采用了贴近自然语言的语法,使得编程变得更加...这需要对易语言的事件驱动编程模型有深入理解。通过不断实践和学习,你可以利用易语言创造出更加丰富的用户界面和应用程序。

    vistausb2.0驱动

    遇到问题时,通过正确的下载渠道获取并安装驱动,遵循正确的安装步骤,可以有效解决USB设备的连接和传输问题。同时,了解和掌握主板驱动的作用,也能帮助用户更好地管理和维护自己的计算机硬件。

    PCI_Linux.rar_ pci_linux_PCI驱动_linux 设备驱动_pci LINUX_pci_linux

    通过学习Linux PCI驱动开发,开发者可以创建自定义的驱动程序,使Linux更好地支持特定的PCI设备。这需要对PCI规范、Linux内核驱动模型以及C语言编程有深入理解。参考`www.pudn.com.txt`可能能找到更多相关资源和示例...

    斑马ZM400打印机文档驱动.rar

    3. 打印作业管理:如何创建和编辑标签模板,设置打印速度、分辨率和墨量。 4. 故障排查:常见问题的解决方案,如打印模糊、纸张卡住、驱动不兼容等。 斑马ZM400打印机的特色功能包括: 1. 高速打印:最高可达到6...

    固高科技GE400运动控制卡 电脑驱动及资料

    5. **winform**:Winform是一种.NET框架下的用户界面开发工具,用于创建图形化用户界面,与控制卡的驱动程序结合,可以设计出直观易用的控制界面,方便操作人员进行参数设置和监控设备状态。 6. **文件资源**: - ...

    泰安主板驱动下载泰安主板驱动_bios205

    在计算机硬件领域,主板是系统的核心部件,它承载着CPU、内存、显卡等重要组件,而主板驱动则是操作系统与主板之间沟通的桥梁。对于泰安主板,确保其驱动程序的正确安装和更新至关重要,因为这直接影响到系统的稳定...

Global site tag (gtag.js) - Google Analytics