我有一个表,其中一列包含 JPanel。我已经编写了自定义渲染器和编辑器,它们工作正常。但是,该面板包含一个带有工具提示的 JLabel 组件。如果我单击单元格并将鼠标悬停在标签上,则会显示工具提示,但如果我将鼠标移入单元格并将鼠标悬停在 JLabel 上,则不会显示工具提示。我在表格中添加了一个鼠标侦听器,如下所示,我在其中获取 Panel 对象并尝试使其具有焦点。
public void mouseMoved(MouseEvent e) {
Point p = e.getPoint();
int row = table.rowAtPoint(p);
int column = table.columnAtPoint(p);
System.out.println(row + " " + column);
Object o = table.getModel().getValueAt(row, column);
if (o instanceof FileInfoCellPanel) {
FileInfoCellPanel ficp = (FileInfoCellPanel)o;
ficp.requestFocusInWindow();
//ficp.revalidate();
}
}
我肯定得到了正确的 JPanel 对象,但它似乎从来没有得到关注。因此,单击单元格似乎将焦点集中在面板上,但移动鼠标却没有。