Swing:如何创建一个自定义的JToolTip像小部件,它可以用鼠标移动

问题描述 投票:8回答:1

Java Swing问题。

我有一个显示图形的JPanel。当我将鼠标移到该图上时,我希望某些信息显示在随鼠标移动的类似工具提示的小部件上。我怎样才能最好地实现呢?

[我想如果我知道如何将自定义JComponent完全定位在用作我的绘图画布的JPanel中,我的问题就会解决。然后,我可以捕获鼠标移动的事件并重新定位/更新小部件。任何其他解决方案(包括可能直接使用JToolTip)也将非常受欢迎!

java swing tooltip
1个回答
9
投票
编辑:

如果您希望工具提示继续用鼠标移动,那么您还需要重写getToolTipLocation()方法。

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ToolTipPanel extends JPanel { public ToolTipPanel() { setPreferredSize( new Dimension(200, 200) ); setToolTipText(""); } public void paintComponent(Graphics g) { g.setColor( Color.red ); g.fillRect(0, 0, 100, 200); g.setColor( Color.blue ); g.fillRect(100, 0, 100, 200); } public String getToolTipText(MouseEvent e) { if (e.getX() < 100) return "red"; else return "blue"; } public Point getToolTipLocation(MouseEvent e) { Point p = e.getPoint(); p.y += 15; return p; // return super.getToolTipLocation(e); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.getContentPane().add( new ToolTipPanel() ); frame.pack(); frame.setLocationRelativeTo( null ); frame.setVisible(true); } }

© www.soinside.com 2019 - 2024. All rights reserved.