我在我的應用程序中有一個JTable。我在表格上有一個自定義的渲染器設置(一個JTextArea,啓用了換行),它允許多行內容。在某些情況下,JTable單元格的內容預計會溢出單元格的邊界。我想要做到以下幾點:如何檢測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
有更好的方法來做到這一點的任何建議?以上是所有平臺上的可靠方法嗎?
會像['TablePopupEditor'](http://stackoverflow.com/a/3591230/230513)是替代? – trashgod 2012-02-04 20:14:46
@trashgod,不太清楚這將如何幫助。我已經想出了「調整大小以適應大小」部分。我真的只想知道我檢測用戶是否點擊了單元格邊界的技術(當鼠標懸停在行邊界上時顯示調整大小的光標)是一種正確的/強大的技術。我可以期望在所有平臺上的光標懸停在行邊界上時是Cursor.N_RESIZE_CURSOR嗎? javadoc沒有提供其他信息,但我想要確認。 – eternaln00b 2012-02-04 21:46:02
對,它不會幫助;我認爲@ camickr的例子是一個潛在的選擇。 Re'Cursor.N_RESIZE_CURSOR',我想你可以發佈[sscce](http://sscce.org/)並要求人們報告他們的發現。 – trashgod 2012-02-05 00:46:19