Java 如何检测对JTable行边界的点击?

Java 如何检测对JTable行边界的点击?,java,swing,jtable,Java,Swing,Jtable,我的应用程序中有一个JTable。我在表上有一个自定义的渲染器设置(一个JTextArea,启用换行),它允许多行内容。在某些情况下,JTable单元格的内容可能会溢出单元格的边界。我想做以下工作: 我希望用户能够双击行边框,而不是让用户拖动行边框来调整单元格的大小,因此当我检测到这种情况时,我可以自动调整单元格的高度(行的高度),以显示单元格的全部内容 我的问题是,检测双击行边界的最佳方法是什么?我通过在JTable上设置一个MouseListener,并使用mouseClicked方法实现了

我的应用程序中有一个JTable。我在表上有一个自定义的渲染器设置(一个JTextArea,启用换行),它允许多行内容。在某些情况下,JTable单元格的内容可能会溢出单元格的边界。我想做以下工作:

我希望用户能够双击行边框,而不是让用户拖动行边框来调整单元格的大小,因此当我检测到这种情况时,我可以自动调整单元格的高度(行的高度),以显示单元格的全部内容

我的问题是,检测双击行边界的最佳方法是什么?我通过在JTable上设置一个MouseListener,并使用mouseClicked方法实现了这一点,该方法如下所示:

public class MouseButtonInputListener extends MouseInputAdapter
{
    private JTable fTable;

    public MouseButtonInputListener(JTable parentTable)
    {
       fTable = parentTable;
    } 

    @Override
    public void mouseClicked(MouseEvent e)
    {

        // Some pre-processing here...

        if(e.getClickCount() == 2 && 
           fTable.getCursor().getType() == Cursor.N_RESIZE_CURSOR)
        {
            // Auto-adjust row height to fit contents...            
        }

    }
}
虽然这样做有效,但我对这句话不太满意:

fTable.getCursor().getType() == Cursor.N_RESIZE_CURSOR

有什么更好的方法可以做到这一点的建议吗?上述方法在所有平台上都可靠吗?

在网上搜索后,我找到了以下页面:

除此之外,它还指定了鼠标光标在不同情况下的行为。根据“指针反馈”部分,光标在N_RESIZE_光标和S_RESIZE_光标之间切换,具体取决于它是悬停在其上的组件的上边界还是下边界。有趣的是,在三分之二的平台(Mac和Windows)上,这些游标完全相同。无论如何,我的代码应该是这样的:

@Override
public void mouseClicked(MouseEvent e)
{
    // Some pre-processing here. Determine row at mouse click location
    int cursorType = fTable.getCursor().getType();
    if(e.getClickCount == 2 && 
      (cursorType == Cursor.N_RESIZE_CURSOR || cursorType == CURSOR.S_RESIZE_CURSOR))
    {
        // Resize row appropriately.
    }
}

这将适用于所有平台。谢谢大家的投入和评论。

有什么可以替代的吗?@trashgood,不太确定这会有什么帮助。我已经找到了“将行大小调整为正确大小”的部分。我真正感兴趣的是,我检查用户是否点击了单元格边界(鼠标悬停在行边界上时,会显示调整大小的光标)的技术是否正确/可靠。当光标悬停在行边界上时,是否可以预期所有平台上的光标都是cursor.N_RESIZE_光标?javadoc没有给出其他指示,但我需要确认;我认为@camickr的例子是一个潜在的替代方案。Re
Cursor.N\u RESIZE\u Cursor
,我想你可以发布一个帖子,让人们报告他们的发现。