当光标指向特定行时,如何获取JTable中的行和列?

时间:2014-03-07 08:52:03

标签: java sql database swing jtable

我正在创建一个包含基本数据的表,这是我的框架enter image description here

当我点击该行时,它将弹出一个包含所有数据的新帧,它运行良好,当我点击一行时,我可以正确获取行和列,

enter image description here

但这是我想做的事情:

当我将光标放在表格行上时,它会自动获取表格中该数据的行和列,并且我想显示该数据的图片,就像在fb上设置光标一样一个配置文件,2秒后,它将显示该用户的配置文件。请帮助,我只是一个新手:)

1 个答案:

答案 0 :(得分:4)

您可以执行的操作是覆盖prepareRenderer的{​​{1}}方法,并为每个单元格设置工具提示。然后使用一些html作为工具提示,如AndrewThompson的this answer所示

我在此网站使用此图片此网址JTable(此问题),但您可能希望使用系统或类路径中的资源并使用{{1}创建网址。在任何情况下,html都需要包含http://i.stack.imgur.com/Bbnyg.jpg中的URL。您可以根据toUri().toUrl()值切换它们。

enter image description here

以下是示例。

enter image description here

<img src=

<强>更新

您可以从资源(在您的类路径中)获取此网址

row/column

如果是文件系统中的文件,则可以执行此操作

import java.awt.Component;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

public class TestTableTooltip {

    String html
            = "<html><body>"
            + "<img src='"
            + "http://i.stack.imgur.com/Bbnyg.jpg"
            + "' width=160 height=120> ";

    public TestTableTooltip() {
        String[] cols = {"COL", "COL", "COL"};
        String[][] data = {
            {"Hello", "Hello", "Hello"},
            {"Hello", "Hello", "Hello"},
            {"Hello", "Hello", "Hello"}
        };
        DefaultTableModel model = new DefaultTableModel(data, cols);
        JTable table = new JTable(model) {
            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(html + "<br/>"
                        + getValueAt(row, column).toString()
                        + ":  row, col (" + row + ", " + column + ")"
                        + "</body></html>");
                }
                return c;
            }
        };

        JFrame frame = new JFrame();
        frame.add(new JScrollPane(table));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TestTableTooltip();
            }
        });
    }
}