Java JTable工具提示作为JComponent或JPanel
我使用的是一个JTable(特别是a),当我将鼠标悬停在一个单元格上时,我想展示一些JPanel或组件(使用JFreeChart显示一些图形数据) 我知道JTable有以下功能:Java JTable工具提示作为JComponent或JPanel,java,swing,jtable,jfreechart,jxtable,Java,Swing,Jtable,Jfreechart,Jxtable,我使用的是一个JTable(特别是a),当我将鼠标悬停在一个单元格上时,我想展示一些JPanel或组件(使用JFreeChart显示一些图形数据) 我知道JTable有以下功能: 但这显然只是显示文本工具提示的一种方式。有什么想法或解决方案吗?您可以在鼠标上方显示一个弹出窗口,并根据需要自定义弹出窗口。我希望下面的代码能有所帮助 JFrame frame = new JFrame("Sort Records based on Time"); frame.setDefaultCloseOpera
但这显然只是显示文本工具提示的一种方式。有什么想法或解决方案吗?您可以在鼠标上方显示一个弹出窗口,并根据需要自定义弹出窗口。我希望下面的代码能有所帮助
JFrame frame = new JFrame("Sort Records based on Time");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object rows[][] = { { "Loganathan Mohanraj", 31 },
{ "Renuka Loganathan", 26 } };
String columns[] = { "Name", "Age" };
final JPopupMenu popUp = new JPopupMenu("Customized Tool Tip");
final JTable table = new JTable(new DefaultTableModel(rows, columns));
table.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
Rectangle bounds = table.getCellRect(row, column, true);
popUp.setVisible(false);
popUp.removeAll();
popUp.add(new JTextField("Mouse Position - Row : " + row + ", Column : " + column));
popUp.show(table, bounds.x, bounds.y + bounds.height);
popUp.setVisible(true);
}
});
JScrollPane pane = new JScrollPane(table);
frame.add(pane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
您可以在鼠标上方显示一个弹出窗口,并且可以根据需要自定义弹出窗口。我希望下面的代码能有所帮助
JFrame frame = new JFrame("Sort Records based on Time");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object rows[][] = { { "Loganathan Mohanraj", 31 },
{ "Renuka Loganathan", 26 } };
String columns[] = { "Name", "Age" };
final JPopupMenu popUp = new JPopupMenu("Customized Tool Tip");
final JTable table = new JTable(new DefaultTableModel(rows, columns));
table.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
Rectangle bounds = table.getCellRect(row, column, true);
popUp.setVisible(false);
popUp.removeAll();
popUp.add(new JTextField("Mouse Position - Row : " + row + ", Column : " + column));
popUp.show(table, bounds.x, bounds.y + bounds.height);
popUp.setVisible(true);
}
});
JScrollPane pane = new JScrollPane(table);
frame.add(pane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
只需在工具提示中使用html标签,如下所示:
table.setToolTipText("<html>"
+ "Get pic from http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png<br><br>"
+ "<img src=\"http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png\"></img></html>");
table.setToolTipText(“”)
+“从我这里得到照片http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png
"
+ "");
只需在工具提示中使用html标签,如下所示:
table.setToolTipText("<html>"
+ "Get pic from http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png<br><br>"
+ "<img src=\"http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png\"></img></html>");
table.setToolTipText(“”)
+“从我这里得到照片http://www.jfree.org/jfreechart/images/CrossHairDemo2-254.png
"
+ "");
我想你可以从这个问题覆盖getToolTipLocation和JTable的createToolTip中得到一些想法,注意弹出窗口容器很重,必须打包()以便随时更改我想你可以从这个问题覆盖getToolTipLocation和JTable的createToolTip中得到一些想法,注意弹出窗口容器很重,必须打包以便随时更改哇,谢谢。。这几乎正是我所希望的。。有没有办法让它不那么“闪烁”?只在鼠标移动到不同的单元格时刷新弹出窗口,而不是每次鼠标移动都更新弹出窗口。哇,谢谢。。这几乎正是我所希望的。。有没有办法让它不那么“闪烁”?只在鼠标移动到不同的单元格时刷新弹出窗口,而不是每次鼠标移动都更新弹出窗口。