每行一个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控件,以及这些控件在实际应用中的作用和实现方式。 首先,RadioButton和CheckedBox是GUI中的两种常见选择控件。RadioButton通常用于提供一组互斥...
将`QRadioButton` 嵌入到`tableWidget` 中可以创建具有交互性的表格,比如在每个单元格中设置一个选项供用户选择。本文将详细探讨如何在`tableWidget` 中插入`QRadioButton` 以及如何判断它们的状态。 首先,我们...
在使用Flex 4技术开发数据展示界面时,常常需要在DataGrid组件中嵌入RadioButton,以便用户可以在多个选项之间做选择。本节内容重点讲解了如何在Flex4的DataGrid中嵌入RadioButton,并提供了相应的实现思路和代码。 ...
本文将深入探讨如何在DataGrid中嵌入RadioButton,并提供相关的实现策略。 首先,我们需要理解.NET框架中的两种主要的DataGrid控件:ASP.NET中的WebForms DataGrid和WPF(Windows Presentation Foundation)中的...
SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库,它是Eclipse项目的一部分。本教程将深入讲解SWT的基本概念、组件使用以及实际开发中的应用技巧。以下是对SWT中文教程的...
在WinForm中,RadioButton控件是一个常见的选择控件,允许用户从一组互斥选项中选择一个。然而,系统默认的RadioButton控件在视觉效果上可能显得较为朴素,有时需要进行美化以提升用户体验。 本文将深入探讨如何...
在C# WinForm应用开发中,自定义RadioButton控件是一种常见的需求,这通常涉及到扩展.NET Framework提供的默认RadioButton控件的功能,以满足特定的设计或交互需求。本教程将深入讲解如何在Visual Studio 2005及其更...
虽然SWT与AWT/Swing不兼容,但通过SWT_AWT,可以将AWT/Swing组件嵌入到SWT应用中。例如,显示一个JFreeChart图表: ```java Composite awtComposite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND); ...
在WPF(Windows Presentation Foundation)中,RadioButton是一种常用的控件,用于实现单选或多选功能。然而,有时候我们可能希望让RadioButton看起来更像一个Button,这可以通过自定义RadioButton的模板来实现。本...
在Windows Presentation Foundation (WPF) 中,RadioButton是一个常用的控件,用于提供一组互斥选项,用户只能选择其中一项。默认情况下,一旦用户选择了RadioButton,它将保持选中状态,直到用户选择同一组中的其他...
在某些情况下,我们可能需要在DataGrid的一列中嵌入单选按钮(RadioButton),以便用户可以选择一行数据。下面将详细介绍如何在Flex4 DataGrid中实现这个功能。 首先,我们要创建一个自定义的ItemRenderer,因为...
在Android开发中,有时我们需要在GridLayout布局中实现类似RadioButton单选功能,这在设计复杂的用户界面时非常有用。本文将详细讲解如何在Android 4.0版本中利用GridLayout模仿RadioButton的单选效果。 首先,了解...
接下来,需要在布局文件中定义RadioButton,并为其设置背景: ```xml <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=...
然而,当RecyclerView中的item包含交互性元素如RadioButton或EditText时,可能会遇到一些问题,特别是当用户在滑动时,数据状态可能会出现错乱。这个问题主要源于RecyclerView的复用机制,它会重用不再可视的item...
在C# WPF(Windows Presentation Foundation)开发中,创建具有自定义样式的RadioButton控件是一项常见的任务。在本文中,我们将深入探讨如何实现一个“上图下文字”的RadioButton样式,并且能够动态生成这些...
为了实现用户只能选择一个条目的功能,我们经常会在ListView的每一项中添加RadioButton。本文将详细讲解如何在ListView中实现RadioButton的单选操作,并提及与GridView的相似性。 首先,我们需要了解ListView的基本...
在Android开发中,"菜单radiobutton_viewpage"的标题暗示我们关注的是如何在菜单中结合RadioButton和ViewPager组件来实现特定的交互效果。RadioButton通常用于在一组互斥选项中进行单选,而ViewPager则用于展示可...
在Android开发中,RadioGroup和RadioButton是常用的组件,用于实现单选功能。本文将深入探讨如何自定义RadioButton的图片以及确保RadioGroup中的每个RadioButton之间的间隔距离保持一致。首先,我们来了解一下这两个...
这里我们将深入探讨如何在ListView的每一项中嵌入RadioButton,并实现单选效果,同时利用Dialog的形式弹出这个ListView。 首先,我们需要在ListView的Adapter中为每一项数据创建一个包含RadioButton的布局。这个...
本教程将详细讲解如何在C#中自定义RadioButton控件,使其具有多色外观,并能方便地拖放到工具箱中供后续使用。 首先,让我们从创建自定义RadioButton控件开始。在C#中,我们可以继承System.Windows.Forms....