有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我用下面的代码从一个JTable中获取一行,该JTable由DrageEvent为某个组件C中的DropTarget生成,该组件可能是JTable,也可能不是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);            
    }

系统。出来println现在只是个黑客。我想知道的是为什么这个系统。出来println并不总是打印“第1行”。当表为空时,它是空的,但如果我将某个内容拖到表的标题行上,就会得到带有“行0”的println。这好像是个虫子。。。还是我不明白rowAtPoint()是如何工作的


共 (1) 个答案

  1. # 1 楼答案

    你有哪个版本的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));
            }