当用户在其中输入错误的值时,我需要在单元格上方(或下方:)显示工具提示(请参见下图)。 我有一个工具提示,但我需要一个Point来显示它在正确的位置,所以我想获得一个单元格位置。你知道怎么做吗?
但是,如果你有一个更好的解决方案来实现这种行为,我对所有命题持开放态度(特别是因为工具提示没有与cell / Jtable / Panel绑定,如果我移动/关闭/ minmize我的窗口工具提示显示在同一位置)
alt text http://img246.imageshack.us/img246/6756/errorpopup.png
谢谢, 达明
答案 0 :(得分:6)
请参阅下面的代码段,您将获得解决方案
JTable table = new JTable() {
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
if (c instanceof JComponent) {
JComponent jc = (JComponent) c;
jc.setToolTipText(getValueAt(row, column).toString());
}
return c;
}
};
如果您只想显示特定的单元格,您只需将getValueAt(...)方法的参数中的列参数更改为包含该单元格的特定列
答案 1 :(得分:2)
您在Swing组件可视指南中有an example of such feature。
编辑:事实上,这并不是你需要的工具提示,因为工具提示需要将光标定位在单元格上。即使光标在单元格之外,您也希望显示工具提示,对吗?
无论如何,另一种解决方案是在用户输入的值无效时(例如橙色或红色)更改单元格的背景,然后添加“真实”工具提示(使用我提供的链接)为了给用户一个完整的错误信息。
答案 2 :(得分:2)
在创建JTable对象时使用以下代码。
JTable auditTable = new JTable(){
//Implement table cell tool tips.
public String getToolTipText(MouseEvent e) {
String tip = null;
java.awt.Point p = e.getPoint();
int rowIndex = rowAtPoint(p);
int colIndex = columnAtPoint(p);
try {
//comment row, exclude heading
if(rowIndex != 0){
tip = getValueAt(rowIndex, colIndex).toString();
}
} catch (RuntimeException e1) {
//catch null pointer exception if mouse is over an empty line
}
return tip;
}
};
答案 3 :(得分:1)
答案 4 :(得分:0)
如果使用RowSorter,请使用以下代码获取正确行的值:
jc.setToolTipText(getValueAt(convertRowIndexToModel(row), column).toString());