0

我创建了一个包含 3 列的 swt 表,第一列是检查列。我使用了这段代码:

  table = new Table(container, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL
            | SWT.H_SCROLL|SWT.MULTI);

当我选择一个项目时,会在第三个冒号中创建一个文本。代码如下:

listener = new Listener() {
 @Override public void handleEvent(Event event) {
 if (event.detail == SWT.CHECK) {
 final TableItem current = (TableItem) event.item; 
if (current.getChecked()) { 
final TableEditor editor = new TableEditor(table); 
text = new Text(table, SWT.NONE);
 editor.grabHorizontal = true;
}

我想获取与所选项目与第三列匹配的单元格的值,但无法使用selectedItem.getText(2). 请问有什么帮助吗?

4

1 回答 1

1

试试这个代码示例。它将打印出 selected 的第 3 列中的文本TableItem

public static void main(String[] args)
{
    Display display = Display.getDefault();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, true));

    Table table = new Table(shell, SWT.CHECK | SWT.MULTI);
    table.setHeaderVisible(true);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    for(int i = 0; i < 4; i++)
    {
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText("Column " + i + "           ");
        column.pack();
    }

    for(int i = 0; i < 10; i++)
    {
        TableItem newItem = new TableItem(table, SWT.NONE);
        newItem.setText(1, "ITEM " + i + " TEXT1");
        newItem.setText(2, "ITEM " + i + " TEXT2");
        newItem.setText(3, "ITEM " + i + " TEXT3");
    }

    table.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event event)
        {
            if(event.detail == SWT.CHECK)
            {
                TableItem current = (TableItem)event.item;

                if(current.getChecked())
                {
                    System.out.println(current.getText(2));
                }
            }
        }
    });

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

这是它的样子:

在此处输入图像描述

于 2012-12-01T17:20:46.617 回答