Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从SWT表中选择一个单元格_Java_Swt - Fatal编程技术网

Java 如何从SWT表中选择一个单元格

Java 如何从SWT表中选择一个单元格,java,swt,Java,Swt,当我单击表中的任何单元格时,只选择并返回该行的第一个单元格,而不完全是该单元格 请告诉我如何从我选择的单元格中选择和获取项目 请看图片 我选择了第三列,但它返回了第一列的TableItem,我以前遇到过同样的问题,我就是这样解决的: 首先,您应该使表格SWT.FULL_SELECTION` 然后,您必须通过读取鼠标位置来获取所选单元格(因为基本swt表不提供获取所选单元格的侦听器;可以选择项目)。代码如下: table.addSelectionListener(new SelectionAda

当我单击表中的任何单元格时,只选择并返回该行的第一个单元格,而不完全是该单元格

请告诉我如何从我选择的单元格中选择和获取项目

请看图片


我选择了第三列,但它返回了第一列的TableItem,我以前遇到过同样的问题,我就是这样解决的:

首先,您应该使表格SWT.FULL_SELECTION`

然后,您必须通过读取鼠标位置来获取所选单元格(因为基本swt表不提供获取所选单元格的侦听器;可以选择项目)。代码如下:

table.addSelectionListener(new SelectionAdapter() 
        {
            public void widgetSelected(SelectionEvent e) 
            {
                if(table.getSelectionIndex() != -1)
                {
                    System.out.println(table.getSelectionIndex());
                    TableItem item = table.getItem(table.getSelectionIndex());
                    System.out.println(item.toString());
                }
                else
                {}
            }
        });
table.addListener(SWT.MouseDown,newlistener()){
公共无效handleEvent(事件){
点pt=新点(事件x、事件y);
TableItem=table.getItem(pt);
如果(项!=null){
for(int col=0;col
我在nebula grid中遇到了类似的问题,发现必须在table对象上启用单元格选择。这是我的代码行:

    table.addListener(SWT.MouseDown, new Listener(){
        public void handleEvent(Event event){
            Point pt = new Point(event.x, event.y);
            TableItem item = table.getItem(pt);
            if(item != null) {
                for (int col = 0; col < table.getColumnCount(); col++) {
                    Rectangle rect = item.getBounds(col);
                    if (rect.contains(pt)) {
                        System.out.println("item clicked.");
                        System.out.println("column is " + col);
                    }
                }
            }
        }
    });

也许您可以尝试用getTable()替换getGrid()。您不需要为此实现选择侦听器。

我有一个表,每一行都是一个TableItem。我希望能够只选择表中的一个单元格,而不是整行(TableItem)。表中没有setCellSelectionEnabled()。
tableViewer.getGrid().setCellSelectionEnabled(true);