关于如何在swing和JTable中使用超链接,网上有很多讨论,例如: HyperLink in JTable Cell
上述方法存在问题,因为它只知道鼠标所在的单元格,而不是它所在的文本,这意味着:
另一种方法是在单元格中显示JEditorPane,但也存在问题,因为JTable只使用单元格渲染器返回的JComponent来绘制,我不认为该对象将被发送任何事件。因为默认渲染器会为每个单元重用该组件,所以让它处理任何事件都没有任何意义。
所以我想知道实现上述效果的最佳方法是什么。
答案 0 :(得分:3)
另一种方法是在单元格中显示JEditorPane,但也存在问题,因为JTable只使用单元格渲染器返回的JComponent来绘制,我不认为该对象将被发送任何事件。
每次细胞获得焦点时,尝试将细胞置于编辑模式。然后编辑器应该显示一个真正的组件,它应该重新启动所有事件。类似的东西:
JTable table = new JTable(...)
{
// Place cell in edit mode when it 'gains focus'
public void changeSelection(int row, int column, boolean toggle, boolean extend)
{
super.changeSelection(row, column, toggle, extend);
if (editCellAt(row, column))
{
Component editor = getEditorComponent();
editor.requestFocusInWindow();
}
}
};
我会自定义代码以仅编辑特定列的单元格。