`
lylegend13
  • 浏览: 82817 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SWT Table中 嵌入RadioButton

阅读更多

  每行一个User,在team中选择一个。

 

  本来想每行一个Group,每个Cell中一个RadioButton,可以实现,但是所有radio属于一个group,不能满足我的一行一个group,所以最终结果是,多个RadioButton集中在一个Cell里。

 

  截图见我的百度空间http://hi.baidu.com/lylegend13/blog/item/d17c3b34fa797b2f5ab5f529.html?timeStamp=1299054794488

 

		viewer = new TableViewer(container, SWT.FULL_SELECTION);

		table = viewer.getTable();
		table.setLinesVisible(true);

		new TableColumn(table, SWT.None).setWidth(cw);

		// column names
		if (colNames == null) {
			teamAmount = inputTeams.size();

			colNames = new String[teamAmount + 1];

			for (int i = 0; i < teamAmount; i++) {
				colNames[i] = inputTeams.get(i).getName();
			}
			colNames[teamAmount] = "no team";
		}

		// column
		TableItem col = new TableItem(table, SWT.None);
		col.setText(0, "");

		ch = col.getBounds().height;

		Group group = new Group(table, SWT.None);
		group.setBounds(col.getBounds().x + cw - 3, col.getBounds().y, cw
				* (teamAmount + 1), ch * 2 + 1);

		Button[] buttons = new Button[teamAmount + 1];
		for (int i = 0; i <= teamAmount; i++) {
			buttons[i] = new Button(group, SWT.None);
			buttons[i].setText(colNames[i]);
			buttons[i].setBounds(i * cw, 0, cw, ch * 2 + 1);
			buttons[i].addSelectionListener(new colSelectionListener(i));
		}
		buttons[teamAmount].setText("no team");

		TableEditor editor = new TableEditor(table);
		editor.setEditor(group, col, 1);
		editor.grabHorizontal = true;// have to

		// no-use row
		new TableItem(table, SWT.None);

		// nodes
		for (UserNode node : inputNodes) {
			TableItem item = new TableItem(table, SWT.None);
			item.setText(0, node.getName());
			item.setData("node", node);
			item.setData("col", teamAmount);

			Group g = new Group(table, SWT.None);
			g.setBounds(item.getBounds().x + cw - 3, item.getBounds().y, cw
					* (teamAmount + 1), ch);
			Button[] b = new Button[teamAmount + 1];
			for (int i = 0; i <= teamAmount; i++) {
				b[i] = new Button(g, SWT.RADIO);
				b[i].setBounds(i * cw, 0, cw, ch);
				b[i].setBackground(table.getBackground());
				b[i].addSelectionListener(new nodeSelectionListener(item, i));
			}
			b[teamAmount].setText("no team");

			item.setData("group", g);

			editor.setEditor(g, item, 1);
		}

 

	class colSelectionListener implements SelectionListener {

		int index;

		public colSelectionListener(int index) {
			this.index = index;
		}

		@Override
		public void widgetDefaultSelected(SelectionEvent e) {
			// TODO Auto-generated method stub
			widgetSelected(e);
		}

		@Override
		public void widgetSelected(SelectionEvent e) {
			// TODO Auto-generated method stub
			TableItem[] items = table.getItems();
			for (int i = 1; i <= nodeAmount; i++) {
				TableItem item = items[i + 1];
				item.setData("col", index);
				for (int j = 0; j <= equAmount; j++) {
					((Button) ((Group) item.getData("group")).getChildren()[j])
							.setSelection(j == index ? true : false);
				}
				if (index < equAmount) {
					if (!selectedNodes.contains(item)) {
						selectedNodes.add(item);
					}
				} else {
					if (selectedNodes.contains(item)) {
						selectedNodes.remove(item);
					}
				}
			}
		}
	}
 

 

	class nodeSelectionListener implements SelectionListener {

		TableItem item;
		int index;

		public nodeSelectionListener(TableItem item, int index) {
			this.item = item;
			this.index = index;
		}

		@Override
		public void widgetDefaultSelected(SelectionEvent e) {
			// TODO Auto-generated method stub
			widgetSelected(e);
		}

		@Override
		public void widgetSelected(SelectionEvent e) {
			// TODO Auto-generated method stub
			item.setData("col", index);
			if (index == equAmount) {
				if (selectedNodes.contains(item)) {
					selectedNodes.remove(item);
				}
			} else {
				if (!selectedNodes.contains(item))
					selectedNodes.add(item);
			}
		}
	}
分享到:
评论

相关推荐

    Draw2D 模拟SWT控件之RadioButton、CheckedBox

    本文将深入探讨如何使用Draw2D模拟SWT中的RadioButton和CheckedBox控件,以及这些控件在实际应用中的作用和实现方式。 首先,RadioButton和CheckedBox是GUI中的两种常见选择控件。RadioButton通常用于提供一组互斥...

    tableWidget里面嵌入多个radiobutton并判断其状态

    将`QRadioButton` 嵌入到`tableWidget` 中可以创建具有交互性的表格,比如在每个单元格中设置一个选项供用户选择。本文将详细探讨如何在`tableWidget` 中插入`QRadioButton` 以及如何判断它们的状态。 首先,我们...

    Flex4 DataGrid中嵌入RadioButton实现思路及代码

    在使用Flex 4技术开发数据展示界面时,常常需要在DataGrid组件中嵌入RadioButton,以便用户可以在多个选项之间做选择。本节内容重点讲解了如何在Flex4的DataGrid中嵌入RadioButton,并提供了相应的实现思路和代码。 ...

    datagrid嵌入radiobutton

    本文将深入探讨如何在DataGrid中嵌入RadioButton,并提供相关的实现策略。 首先,我们需要理解.NET框架中的两种主要的DataGrid控件:ASP.NET中的WebForms DataGrid和WPF(Windows Presentation Foundation)中的...

    SWT中文教程.rar

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库,它是Eclipse项目的一部分。本教程将深入讲解SWT的基本概念、组件使用以及实际开发中的应用技巧。以下是对SWT中文教程的...

    C#WinForm控件美化扩展RadioButton

    在WinForm中,RadioButton控件是一个常见的选择控件,允许用户从一组互斥选项中选择一个。然而,系统默认的RadioButton控件在视觉效果上可能显得较为朴素,有时需要进行美化以提升用户体验。 本文将深入探讨如何...

    C# WinForm 自定义 RadioButton

    在C# WinForm应用开发中,自定义RadioButton控件是一种常见的需求,这通常涉及到扩展.NET Framework提供的默认RadioButton控件的功能,以满足特定的设计或交互需求。本教程将深入讲解如何在Visual Studio 2005及其更...

    SWT疑难点解答,帮助新手朋友

    虽然SWT与AWT/Swing不兼容,但通过SWT_AWT,可以将AWT/Swing组件嵌入到SWT应用中。例如,显示一个JFreeChart图表: ```java Composite awtComposite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND); ...

    wpf radiobutton模版设计成button样式

    在WPF(Windows Presentation Foundation)中,RadioButton是一种常用的控件,用于实现单选或多选功能。然而,有时候我们可能希望让RadioButton看起来更像一个Button,这可以通过自定义RadioButton的模板来实现。本...

    RadioButton实现选择后可取消选择

    在Windows Presentation Foundation (WPF) 中,RadioButton是一个常用的控件,用于提供一组互斥选项,用户只能选择其中一项。默认情况下,一旦用户选择了RadioButton,它将保持选中状态,直到用户选择同一组中的其他...

    Flex4 DataGrid中如何嵌入RadioButton

    在某些情况下,我们可能需要在DataGrid的一列中嵌入单选按钮(RadioButton),以便用户可以选择一行数据。下面将详细介绍如何在Flex4 DataGrid中实现这个功能。 首先,我们要创建一个自定义的ItemRenderer,因为...

    Android 4.0 在GridLayout中模仿RadioButton单选按钮

    在Android开发中,有时我们需要在GridLayout布局中实现类似RadioButton单选功能,这在设计复杂的用户界面时非常有用。本文将详细讲解如何在Android 4.0版本中利用GridLayout模仿RadioButton的单选效果。 首先,了解...

    android 自定义RadioButton的样式

    接下来,需要在布局文件中定义RadioButton,并为其设置背景: ```xml &lt;RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=...

    防止RadioButton在RecyclerView中滑动出现错乱

    然而,当RecyclerView中的item包含交互性元素如RadioButton或EditText时,可能会遇到一些问题,特别是当用户在滑动时,数据状态可能会出现错乱。这个问题主要源于RecyclerView的复用机制,它会重用不再可视的item...

    c# WPF 上图下文字radiobutton样式,且可动态生成radiobutton,搭配触摸滚动条

    在C# WPF(Windows Presentation Foundation)开发中,创建具有自定义样式的RadioButton控件是一项常见的任务。在本文中,我们将深入探讨如何实现一个“上图下文字”的RadioButton样式,并且能够动态生成这些...

    listview 里面加radiobutton 单选操作

    为了实现用户只能选择一个条目的功能,我们经常会在ListView的每一项中添加RadioButton。本文将详细讲解如何在ListView中实现RadioButton的单选操作,并提及与GridView的相似性。 首先,我们需要了解ListView的基本...

    菜单radiobutton_viewpage

    在Android开发中,"菜单radiobutton_viewpage"的标题暗示我们关注的是如何在菜单中结合RadioButton和ViewPager组件来实现特定的交互效果。RadioButton通常用于在一组互斥选项中进行单选,而ViewPager则用于展示可...

    Android:解决RadioGroup中RadioButton的图片自定义及每项间隔距离一样

    在Android开发中,RadioGroup和RadioButton是常用的组件,用于实现单选功能。本文将深入探讨如何自定义RadioButton的图片以及确保RadioGroup中的每个RadioButton之间的间隔距离保持一致。首先,我们来了解一下这两个...

    ListView下的Radiobutton单选问题

    这里我们将深入探讨如何在ListView的每一项中嵌入RadioButton,并实现单选效果,同时利用Dialog的形式弹出这个ListView。 首先,我们需要在ListView的Adapter中为每一项数据创建一个包含RadioButton的布局。这个...

    c#自定义控件的制作,美化的RadioButton

    本教程将详细讲解如何在C#中自定义RadioButton控件,使其具有多色外观,并能方便地拖放到工具箱中供后续使用。 首先,让我们从创建自定义RadioButton控件开始。在C#中,我们可以继承System.Windows.Forms....

Global site tag (gtag.js) - Google Analytics