Java 获取swt表中单元格的值

Java 获取swt表中单元格的值,java,swt,Java,Swt,我创建了一个swt表,它有3列,第一列是check列。我使用了以下代码: table = new Table(container, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL|SWT.MULTI); 当我选择一个项目时,将在第三个冒号中创建一个文本。代码如下: listener = new Listener() { @Override public void handleEvent(Event even

我创建了一个swt表,它有3列,第一列是check列。我使用了以下代码:

  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)
获取该值。
有什么帮助吗?

试试这个代码示例。它将打印所选
表项第3列中的文本:

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();
}
publicstaticvoidmain(字符串[]args)
{
Display=Display.getDefault();
最终外壳=新外壳(显示);
setLayout(新的GridLayout(1,true));
表=新表(外壳,SWT.CHECK | SWT.MULTI);
表.setheadervible(true);
setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true));
对于(int i=0;i<4;i++)
{
TableColumn column=新的TableColumn(表,SWT.NONE);
column.setText(“column”+i+”);
column.pack();
}
对于(int i=0;i<10;i++)
{
TableItem newItem=新的TableItem(表,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())
{
@凌驾
公共无效handleEvent(事件)
{
if(event.detail==SWT.CHECK)
{
TableItem当前=(TableItem)event.item;
if(current.getChecked())
{
System.out.println(current.getText(2));
}
}
}
});
shell.pack();
shell.open();
而(!shell.isDisposed())
{
如果(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
这就是它看起来的样子:


@user1803305如果它解决了您的问题,请接受并投票支持我的答案。如果没有,请澄清。这很有帮助,因为它帮助我发现这不是问题所在。事实上,我的第三个专栏是swt文本。这就是为什么我在使用getText(2)时得到一个空值。但是我仍然不知道如何解决这个问题。@user1803305你的专栏怎么可能是文本?请发布更多的代码。我有一个swt检查表。当我选择一个项目时,将在第三列中创建一个文本。代码如下:listener=newlistener(){@Override public void handleEvent(Event-Event){if(Event.detail==SWT.CHECK){final TableItem current=(TableItem)Event.item;if(current.getChecked()){final TableEditor=new TableEditor(table);text=new text(table,SWT.NONE);editor.grabHorizontal=true;@user1803305请不要在评论中发布代码,编辑您的问题并将其添加到那里。您不使用JFace TableViewer有什么原因吗?