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

标签 java 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
                {}
            }
        });

当我点击表格中的任何单元格时,只有该行的第一个单元格被选中并返回,而不是那个单元格

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

请看图片 enter image description here

我选择了第 3 列,但它返回了第一列的 TableItem

最佳答案

我之前遇到过同样的问题,我是这样解决的:

首先,您应该制作表格 SWT.FULL_SELECTION`;

然后,您必须通过读取鼠标位置来获取选定的单元格(因为基本swt 表不提供监听器来获取选定的单元格;选择一个项目是可能的)。这是代码:

    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);
                    }
                }
            }
        }
    });

关于java - 如何从 SWT 表中选择一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11828053/

相关文章:

java - 如何剥离 "garbage"个字符而不丢失有效的 "weird"个字符?

java - 在不活动一段时间后关闭 SWT 应用程序

java - 如何监听组小部件(Java SWT)的文本修改事件?

java - 为什么 Eclipsepedia 的 TreeViewer 需要这段代码?

java - JFace TableViewer 在另一个线程中排序

java - SWT - 平移到下一个窗口内容

java - 在 Java 中加密 Arraylist

java - 如何克隆 JPA 实体

java - 找到最近点(几何点)

java - a += b 和 a = a + b 之间的区别