我正在创建一个包含基本数据的表,这是我的框架
当我点击该行时,它将弹出一个包含所有数据的新帧,它运行良好,当我点击一行时,我可以正确获取行和列,
但这是我想做的事情:
当我将光标放在表格行上时,它会自动获取表格中该数据的行和列,并且我想显示该数据的图片,就像在fb上设置光标一样一个配置文件,2秒后,它将显示该用户的配置文件。请帮助,我只是一个新手:)
答案 0 :(得分:4)
您可以执行的操作是覆盖prepareRenderer
的{{1}}方法,并为每个单元格设置工具提示。然后使用一些html作为工具提示,如AndrewThompson的this answer所示
我在此网站使用此图片此网址JTable
(此问题),但您可能希望使用系统或类路径中的资源并使用{{1}创建网址。在任何情况下,html都需要包含http://i.stack.imgur.com/Bbnyg.jpg
中的URL。您可以根据toUri().toUrl()
值切换它们。
以下是示例。
<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();
}
});
}
}