RobotTask:属性编辑对话框的实现

1.实现一个基本的:

程序如下:

  1 import org.eclipse.jface.dialogs.Dialog;
  2 import org.eclipse.jface.dialogs.IDialogConstants;
  3
  4 import javax.swing.text.StyleConstants.ColorConstants;
  5
  6 import org.eclipse.swt.SWT;
  7 import org.eclipse.swt.events.SelectionAdapter;
  8 import org.eclipse.swt.events.SelectionEvent;
  9 import org.eclipse.swt.graphics.Point;
 10 import org.eclipse.swt.layout.FillLayout;
 11 import org.eclipse.swt.layout.GridData;
 12 import org.eclipse.swt.layout.GridLayout;
 13 import org.eclipse.swt.widgets.Composite;
 14 import org.eclipse.swt.widgets.Control;
 15 import org.eclipse.swt.widgets.Group;
 16 import org.eclipse.swt.widgets.Shell;
 17 import org.eclipse.swt.widgets.TabFolder;
 18 import org.eclipse.swt.widgets.TabItem;
 19 import org.eclipse.swt.widgets.Table;
 20 import org.eclipse.swt.widgets.TableColumn;
 21 import org.eclipse.swt.widgets.TableItem;
 22 import org.eclipse.swt.widgets.Tree;
 23 import org.eclipse.swt.widgets.TreeItem;
 24
 25 public class CustomPropertyDialog extends Dialog {
 26     private Table table;
 27     private Tree tree;
 28     protected CustomPropertyDialog(Shell parentShell) {
 29         super(parentShell);
 30         // TODO Auto-generated constructor stub
 31     }
 32
 33     @Override
 34     protected Point getInitialSize() {
 35         return new Point(500,500); //宽和高
 36     }
 37
 38     @Override
 39     protected Control createDialogArea(Composite parent) {
 40         Composite composite = new Composite(parent, SWT.NONE);
 41         GridLayout layout = new GridLayout();
 42         layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
 43         layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
 44         layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
 45         layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
 46         composite.setLayout(layout);
 47         composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 48         applyDialogFont(composite);
 49
 50         TabFolder tabFolder = new TabFolder(composite,SWT.BORDER);
 51         //tabFolder.setSize(400, 600);
 52         tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
 53
 54         TabItem tabItem1 = new TabItem(tabFolder,SWT.NONE);
 55         tabItem1.setText("属性编辑");
 56
 57         Composite composite1 = new Composite(tabFolder,SWT.NONE);
 58         tabItem1.setControl(composite1);//setControl的意思就是,选tabItem1时,composite1就显示出来。
 59
 60         GridLayout compisite1layout = new GridLayout();
 61         layout.numColumns = 1;
 62         composite1.setLayout(compisite1layout);
 63
 64         //composite1的布局,有两个group,一个是tree,一个是table
 65         Group treeGroup = new Group(composite1,SWT.NONE);
 66         treeGroup.setText("Tree");
 67         GridData griddata = new GridData(GridData.FILL_BOTH);
 68         griddata.heightHint = 50;
 69         treeGroup.setLayoutData(griddata);
 70         treeGroup.setLayout(new GridLayout(1,false));
 71
 72         //treeGroup的具体内容,数据在这里程序,我要怎么把数据弄过来呢?
 73         {
 74             tree = new Tree(treeGroup,SWT.SINGLE);
 75             tree.setLayoutData(new GridData(GridData.FILL_BOTH));
 76             //添加第一个元素
 77             TreeItem stu1 = new TreeItem(tree,SWT.NONE);
 78             stu1.setText("xingoo");
 79             {
 80                 TreeItem info1 = new TreeItem(stu1,SWT.NONE);
 81                 info1.setText("age:25");
 82
 83                 TreeItem info2 = new TreeItem(stu1,SWT.NONE);
 84                 info2.setText("tel:12345");
 85             }
 86             //添加第二个元素
 87             TreeItem stu2 = new TreeItem(tree,SWT.NONE);
 88             stu2.setText("halo");
 89             {
 90                 TreeItem info3 = new TreeItem(stu2,SWT.NONE);
 91                 info3.setText("age:25");
 92
 93                 TreeItem info4 = new TreeItem(stu2,SWT.NONE);
 94                 info4.setText("tel:67890");
 95             }
 96
 97             //这里需要修改,点击的时候,我不是要添加,而是要使其选中table中对应的数据
 98             tree.addSelectionListener(new SelectionAdapter() {
 99                 public void widgetSelected(SelectionEvent evt){
100                     //这里设置的是,点击就增加一个tableItem
101                     TableItem item = new TableItem(table,SWT.NONE);
102                     item.setText(new String[]{tree.getSelection()[0].toString(),tree.getSelection()[0].getText()});
103                 }
104             });
105         }
106
107         //composite1的布局,有两个group,一个是tree,一个是table
108         Group tableGroup = new Group(composite1,SWT.NONE);
109         tableGroup.setText("Table");
110         GridData gd = new GridData(GridData.FILL_BOTH);
111         gd.heightHint = 20;
112         tableGroup.setLayoutData(gd);
113         tableGroup.setLayout(new GridLayout(1,false));
114
115         //tableGroup的具体内容
116         {    //创建一个单选的,有边界的,一行全选的表格
117             table = new Table(tableGroup,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
118             table.setHeaderVisible(true);//设置表头可见
119             table.setLinesVisible(true);//设置线条可见
120             table.setLayoutData(new GridData(GridData.FILL_BOTH));
121             //开始设置列,我需要的列应该要增加速度和坐标
122             TableColumn column1 = new TableColumn(table,SWT.NULL);
123             column1.setText("模型名字");
124             column1.pack();
125             column1.setWidth(100);
126
127             TableColumn column2 = new TableColumn(table,SWT.NULL);
128             column2.setText("父模型");
129             column2.pack();
130             column2.setWidth(100);
131
132             TableColumn column3 = new TableColumn(table,SWT.NULL);
133             column3.setText("速度");
134             column3.pack();
135             column3.setWidth(100);
136
137             TableColumn column4 = new TableColumn(table,SWT.NULL);
138             column4.setText("坐标系");
139             column4.pack();
140             column4.setWidth(100);
141         }
142
143         return composite;
144     }
145 }

2.欠缺的部分:

(1)tree和table中的数据如何获取。这个参数是在文件里的。

(2)点击事件,现在的设定是点击tree,table里就增加一个对应的部分。我要实现的是,点击这个,table里就定位到这里。

(3)table目前里面是不可以编辑的,如何修改为可以编辑。

(4)是不是要增加一个Apply的button在composite1里或者tabholder里,否则多次修改,只有一个最外层的ok键,总觉得不太好。

时间: 2024-11-14 11:01:57

RobotTask:属性编辑对话框的实现的相关文章

属性页对话框

1.分类 标签式和向导式 2.相关类 CPropertyPage -属性页,其实就是一个对话框页面,父类是CDialog类 CPropertySheet -属性表单,父类是CWnd类 一个完整的属性页对话框由一个属性表单+多个属性页组成 属性页资源与普通对话框资源的区别: 属性页: 对话框: 3.标签式属性页 3.1插入属性页对话框资源,修改语言和字体,双击资源,生成相应的类,注意父类选择CPropertyPage类. 创建一个单文档视图的MFC工程:Prop 插入3个属性页: 注意:①这里插入

C++MFC编程笔记day10 MF界面控件的使用2、属性页对话框、MFC线程

一 树型控件 1 相关类 CTreeCtrl-父类是CWnd,控件类. CTreeView-父类是CCtrlView,视图类.CTreeView=CView+CTreeCtrl CTreeView::GetTreeCtrl 2 CTreeCtrl的使用 对比CListCtrl:列表控件的每个数据项之间是平等关系,通过数据项 的索引值得到数据项的信息.树控件每个数据项称之为节点.节点之间 的关系包括父子关系和兄弟关系.通常通过节点句柄得到某个节点. 通常用来表示层次关系的数据. 2.1 设置控件的

MFC属性页对话框

属性页对话框 分类 标签式和向导式 相关类 CPropertyPage-父类是CDialog类,称为属性页或页面对话框. CPropertySheet-父类是CWnd,称为属性表单. 一个完整的属性页对话框由一个属性表单+多个属性页组成.属性页嵌套在属性表单内. 标签式属性页的创建步骤: 1 插入属性页对话框资源,选中对话框资源ID修改语言为Chinese(P.R.C), 选中资源视图的右边的对话框右键选择属性设置为宋体,9号字体,双击资源,生成相应的类,注意父类选择CPropertyPage类

(转载)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将<VC++/MFC编程入门>改为<VS2010/MFC编程入门>. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面.另外,我们在创建MFC工程时使用的向导对话框也属于属性页对话框,它通过点击"Next&

(转载)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)

属性页对话框包括向导对话框和一般属性页对话框两类,上一节鸡啄米讲了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框. 一般属性页对话框的创建步骤: 1.创建属性页对话框资源 属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需进行任何修改. 2.创建属性页类 属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话

MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)

属性页对话框包括向导对话框和一般属性页对话框两类,上一节讲了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框. 一般属性页对话框的创建步骤: 1.创建属性页对话框资源 属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需要进行任何修改. 2.创建属性页类 属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话框中不需要

属性页对话框 去掉下面的一排按钮

属性页的模式有2种 <span style="font-size:18px;"></span><pre name="code" class="cpp"> //向导模式 ID_WIZNEXT // Next ID_WIZBACK // Back ID_WIZFINISH // Finsh IDCANCEL // Cancel //普通模式 IDOK // OK IDCANCEL //Cancel ID_APPLY

VS2010/MFC对话框:一般属性页对话框的创建及显示

一般属性页对话框的创建及显示 本节将介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框. 一般属性页对话框的创建步骤: 1.创建属性页对话框资源 属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需进行任何修改. 2.创建属性页类 属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话框中不需要“下一步”和“完成”等按钮,所以上一讲中属性页类的OnS

VS2010-MFC(对话框:属性页对话框及相关类的介绍)

转自:http://www.jizhuomi.com/software/164.html 一 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面.另外,我们在创建MFC工程时使用的向导对话框也属于属性页对话框,它通过点击"Next"等按钮来切换页面. 属性页对话框就是包含一般属性页对话框和向导对话框两类.它将多个对话框集成于一身,通过标签或按钮来切换页面. 二 属性页对话框相关类       我们使用属性页对话框时