SWT问题,求高手解答

问题描述

程序如下:我想让我输入字符后直接创建一棵树。。该怎么写。。我写的是鼠标点下后树才出现。packagetree;importorg.eclipse.jface.dialogs.InputDialog;importorg.eclipse.swt.SWT;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Event;importorg.eclipse.swt.widgets.Listener;importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Tree;importorg.eclipse.swt.widgets.TreeItem;importorg.eclipse.swt.custom.SashForm;importorg.eclipse.swt.widgets.Group;importorg.eclipse.swt.layout.FillLayout;importorg.eclipse.swt.widgets.Menu;importorg.eclipse.swt.widgets.MenuItem;importorg.eclipse.swt.events.SelectionAdapter;importorg.eclipse.swt.events.SelectionEvent;importorg.eclipse.ui.forms.widgets.FormToolkit;importorg.eclipse.swt.events.MouseAdapter;importorg.eclipse.swt.events.MouseEvent;publicclassTestextendsShell{/***Launchtheapplication.*@paramargs*/publicintm;publicStrings;privatefinalFormToolkitformToolkit=newFormToolkit(Display.getDefault());publicstaticvoidmain(Stringargs[]){try{Displaydisplay=Display.getDefault();finalShellshell=newTest(display);shell.open();shell.layout();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}}catch(Exceptione){e.printStackTrace();}}/***Createtheshell.*@paramdisplay*/publicTest(Displaydisplay){super(display,SWT.SHELL_TRIM);setLayout(newFillLayout(SWT.HORIZONTAL));{SashFormsashForm=newSashForm(this,SWT.NONE);{finalGroupg=newGroup(sashForm,SWT.NONE);g.addMouseListener(newMouseAdapter(){@OverridepublicvoidmouseDown(MouseEvente){while(s!=null){Treetree=formToolkit.createTree(g,SWT.NONE);tree.setBounds(0,10,85,85);formToolkit.paintBordersFor(tree);finalTreeItemroot=newTreeItem(tree,SWT.NULL);root.setText(s);TreeItemr1=newTreeItem(root,SWT.NULL);r1.setText("协议");TreeItemr2=newTreeItem(root,SWT.NULL);r2.setText("服务");TreeItemr3=newTreeItem(root,SWT.NULL);r3.setText("环境");s=null;}}});}{Groupgroup=newGroup(sashForm,SWT.NONE);}sashForm.setWeights(newint[]{1,1});}{Menumenu=newMenu(this,SWT.BAR);setMenuBar(menu);{MenuItemmenuItem=newMenuItem(menu,SWT.CASCADE);menuItem.setText("NewSubMenu");{Menumenu_1=newMenu(menuItem);menuItem.setMenu(menu_1);{MenuItemm=newMenuItem(menu_1,SWT.NONE);m.addSelectionListener(newSelectionAdapter(){@OverridepublicvoidwidgetSelected(SelectionEvente){InputDialogdlg=newInputDialog(getShell(),"新建文件","请输入文件名",null,null);if(dlg.open()==InputDialog.OK){s=dlg.getValue();};}});m.setText("new");}}}}createContents();}/***Createcontentsoftheshell.*/protectedvoidcreateContents(){setText("SWTApplication");setSize(450,300);}@OverrideprotectedvoidcheckSubclass(){//DisablethecheckthatpreventssubclassingofSWTcomponents}}

解决方案

解决方案二:
怎么回事?我运行了一下,但没看到什么结果,是不我哪里弄错了?
解决方案三:
你直接把创建Tree的代码放到dlg.open()下面就可以了if(dlg.open()==InputDialog.OK){s=dlg.getValue();if(s!=null){Treetree=formToolkit.createTree(g,SWT.NONE);tree.getParent().setLayout(newGridLayout());tree.setLayoutData(newGridData(GridData.FILL_BOTH));//tree.setBounds(0,10,85,85);formToolkit.paintBordersFor(tree);finalTreeItemroot=newTreeItem(tree,SWT.NULL);root.setText(s);TreeItemr1=newTreeItem(root,SWT.NULL);r1.setText("协议");TreeItemr2=newTreeItem(root,SWT.NULL);r2.setText("服务");TreeItemr3=newTreeItem(root,SWT.NULL);r3.setText("环境");s=null;}}

不知道你要的是不是这个效果
解决方案四:
不好意思,改了下代码,上面的有问题那个g,你可以把Group定义到类级别的,就可以访问了if(dlg.open()==InputDialog.OK){s=dlg.getValue();if(s!=null){Treetree=formToolkit.createTree(g,SWT.NONE);tree.setBounds(0,10,85,85);formToolkit.paintBordersFor(tree);finalTreeItemroot=newTreeItem(tree,SWT.NULL);root.setText(s);TreeItemr1=newTreeItem(root,SWT.NULL);r1.setText("协议");TreeItemr2=newTreeItem(root,SWT.NULL);r2.setText("服务");TreeItemr3=newTreeItem(root,SWT.NULL);r3.setText("环境");s=null;}}

时间: 2024-08-04 14:58:34

SWT问题,求高手解答的相关文章

android开发-求高手解答安卓软件兼容性的一个问题

问题描述 求高手解答安卓软件兼容性的一个问题 安卓新手一枚,在2.2的试验机上做了个仿qq程序,今天拿了部4.0试了下,很多控件没有反应,甚至有的操作还会报错,不知道是为什么,我在建立这个项目时按照默认的配置配的,求解......

VC++的win32小程序内存泄漏,求高手解答

问题描述 VC++的win32小程序内存泄漏,求高手解答 做的一个简单的交通模拟小程序,用三个定时器分别产生 汽车处理消息,红绿灯更换消息和汽车随机产生消息.但是最后程序内存越跑越大.求高手解答.http://download.csdn.net/detail/hdwbdbsm/6724747这个是程序的下载地址,求高手.

求高手解答:出现警告标语: 从“double”到“float”截断。

问题描述 求高手解答:出现警告标语: 从"double"到"float"截断. 我都是用float定义的,为什么程序编译时会说从double到float截断.代码如下 #includeusing namespace std;//#define float double class po{public: po(float x=0float y=0); void setpo(floatfloat); float getx()const{return x;} float

class-jsp做一个类似于视频评论下的回复功能的获得数据显示,对前端不是很熟悉,求高手解答

问题描述 jsp做一个类似于视频评论下的回复功能的获得数据显示,对前端不是很熟悉,求高手解答 20C CREATE TABLE videocomment (id int(10) NOT NULL AUTO_INCREMENT/**ID**/createTime timestamp NULL DEFAULT CURRENT_TIMESTAMP/**创建时间**/userId int(10) NOT NULL/**用户ID**/videoId int(10) NOT NULL/**视频ID**/re

求高手解答,mantis的bug_change_status_page.php 中报 APPLICATION WARNING #300:

问题描述 求高手解答,mantis的bug_change_status_page.php 中报 APPLICATION WARNING #300: mantis安装成功后,进行了一些配置文件的修改和配置后,在bug_change_status_page.php 页面中,报APPLICATION WARNING #300:,找了好几天,还是找不到问题所在.请各位大侠指教,估计要懂PHP得高手.具体如下图: 解决方案 最后自己还是捣鼓出来了,原来之前看了网上的配置方法,在config_default

hibernate-Maven test一个Web项目,报错,弄了一天没弄好,求高手解答

问题描述 Maven test一个Web项目,报错,弄了一天没弄好,求高手解答 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/Delegating

swing-关于JTable渲染器Renderer的问题,求高手解答!!!!

问题描述 关于JTable渲染器Renderer的问题,求高手解答!!!! public class MyButtonRender implements TableCellRenderer { private JPanel panel; private JButton add,reduce; private JTextField numbertf; public MyButtonRender() { this.initAdd(); this.initReduce(); this.initNumb

java-openmeetings无法进入登录页面 页面报错Internal error 求高手解答

问题描述 openmeetings无法进入登录页面 页面报错Internal error 求高手解答 用的是apache-openmeetings-3.0.7 连接的是oracle 安装完成后访问一切正常,但是关掉red5 再次启动后 页面无法进入 页面报错:Internal error 后台报错信息为: ERROR 12-30 14:22:42.142 DefaultExceptionMapper.java 255077 170 org.apache.wicke t.DefaultExcept

char-java中参数传递变换的问题,求问:结果为什么是这样的啊??求高手解答!拜谢~

问题描述 java中参数传递变换的问题,求问:结果为什么是这样的啊??求高手解答!拜谢~ 求问:结果为什么是这样的啊?? change:Test change:g change:b change:c TestPram:Hello TestPram:g TestPram:b TestPram:c 代码如下: public class TestPram { String str = "Hello"; char[] ch = {'a','b','c'}; public static void

c#代码-求高手解答二进制堆及其应用问题

问题描述 求高手解答二进制堆及其应用问题 2.二进制堆及其应用 [问题描述] 堆是设计很巧妙的数据结构,堆排序的算法也有很多应用.但当堆比较庞大时,选取堆顶元素及重新建堆的工作量也较大.利用堆的定义构建二进制堆,应用于优先队列有很大的优势.二进制堆是在二进制树Bk上建立的数据结构.一个整数可以表示为二进制数,一组关键字组成的序列可以由一组二进制堆表示. [设计要求] 设计二进制堆的抽象数据类型及其实现. (1)实现二进制堆Hk的ADT. (2)实现二进制堆的简单应用. 以上是我的作业题,我没看懂