Java/Swing : JTable. rowAtPoint 对于表外的点不能正常工作?

标签 java swing coordinates

我有这段代码可以从 JTable 中获取一行,该行是由 DragEvent 为某个组件 C 中的 DropTarget 生成的,它可能是也可能不是 JTable:

public int getRowFromDragEvent(DropTargetDragEvent event) {
        Point p = event.getLocation();
        if (event.getSource() != this.table)
        {
            SwingUtilities.convertPointToScreen(p, 
                event.getDropTargetContext().getComponent());
            SwingUtilities.convertPointFromScreen(p, this.table);
            if (!this.table.contains(p))
            {
                System.out.println("outside table, would be row 
                  "+this.table.rowAtPoint(p));
            }
        }
        return this.table.rowAtPoint(p);            
    }

System.out.println 现在只是一个 hack。我想知道的是,为什么 System.out.println 并不总是打印“行 -1”。当表格为空时它确实如此,但是如果我将某些东西拖到表格的标题行上,我会得到带有“第 0 行”的 println。这似乎是一个错误......或者我不明白 rowAtPoint() 是如何工作的?

最佳答案

您使用的是哪个版本的 Java?

在我看来像是一个错误:请参阅 http://bugs.sun.com/view_bug.do?bug_id=6291631

如果是这种情况,您可以添加额外的检查:

if (!this.table.contains(p))
        {
            if(p.y < 0) 
              System.out.println("clicked above table");
            else
              System.out.println("outside table, would be row 
              "+this.table.rowAtPoint(p));
        }

关于Java/Swing : JTable. rowAtPoint 对于表外的点不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692095/

相关文章:

Android - 以编程方式创建 TextView(或 EditText)并将其设置在屏幕上提供坐标的特定位置

javascript - 如何从 OpenLayers 坐标中分离经度和纬度

javascript - OpenLayers 和 JSON 中的坐标

java - 如何检测 HttpServletRequest 的 TLS 版本?

java - Spark Java : Passing variable number of arguments to a function

java - 如何检查给定的字符串是否是有效的java标识符?

图标路径中的 Java 非法转义字符

java - SwingWorker done() 调用了两次?

java - WindowEvent.WINDOW_CLOSING 提前终止程序

java - 如何在JAVA中读取.txt文件的特定部分