gpt4 book ai didi

java - Swing:如何创建自定义的 JToolTip 类随鼠标移动的小部件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:20 25 4
gpt4 key购买 nike

Java Swing 问题。

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

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

最佳答案

重写 getToolTipText(MouseEvent) 方法以根据鼠标位置动态设置工具提示。

编辑:

如果您希望工具提示随着鼠标不断移动,那么您还需要覆盖 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);
}
}

关于java - Swing:如何创建自定义的 JToolTip 类随鼠标移动的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com