我通过覆盖JTable继承的JComponent方法在我的JTable中启用了工具提示:
public String getToolTipText(MouseEvent e) { ... }
Run Code Online (Sandbox Code Playgroud)
现在,假设用户在一个单元格上盘旋,出现工具提示,然后他开始编辑单元格,我想强行关闭工具提示.
目前,工具提示只是挂起,直到我使用ToolTipManager #setDismissDelay指定的值到期.工具提示有时会模糊正在编辑的单元格的视图,这就是为什么我想在表格上的任何单元格进入编辑模式时忽略它.
我尝试了以下方法(这是伪代码)
public String getToolTipText(MouseEvent e)
{
if(table-is-editing)
return null;
else
return a-string-to-display-in-the-tooltip;
}
Run Code Online (Sandbox Code Playgroud)
当然,这只会在编辑模式下显示表格的工具提示非常好.我知道这不起作用,但更多的是在黑暗中拍摄.
我有一个JTable,它存放在一个滚动窗格中,而滚动窗格又位于一个嵌入JFrame的面板中.如果JFrame被扩展,那么下面和JTable的右边都有空白空间.
如果用户在表格下方,表格下方或表格右侧点击,我想清除表格上的选择.
为了在用户点击表格时清除选择,我配置表格以填充滚动窗格视口的高度,并向表格添加了一个MouseListener,这样当用户点击表格下方时,"rowAtPoint"返回 - 1,然后我清除选择.但是,这不适用于表格的RHS.该表甚至没有收到这些鼠标事件.我应该如何检测JTable右侧的点击并清除表格上的选择?见下面的代码.请注意,我并不打算让代码变得漂亮,并以"正确的方式"做事.我的重点只是创建一个说明问题的SSCCE.:)
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class TableTest {
public static void main(String args[]) {
JFrame f = new JFrame();
JPanel p = new JPanel(new BorderLayout());
JScrollPane sp = new JScrollPane();
final JTable t = new JTable(5,5);
t.setFillsViewportHeight(true);
t.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(int i = 0; i < 5; i++) {
t.getColumnModel().getColumn(i).setWidth(50);
t.getColumnModel().getColumn(i).setMaxWidth(75);
}
t.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row = t.rowAtPoint(e.getPoint());
if(row == …Run Code Online (Sandbox Code Playgroud)