我有一个应用程序,我希望用户能够将鼠标悬停和/或右键单击在 JPanel 上绘制的线条。我完全希望我会将该行作为处理所有行为的对象的一部分来实现,但我有一个更基本的问题,即如何实现下图中显示的行。先上图:
我可以毫无问题地自己画线,但它目前只是paintComponent()
在 parent 的覆盖调用中完成JPanel
。我对如何处理这个问题有一个初步的想法:
public class ChassisLink extends JComponent implements MouseListener
{
//Rectangle to handle mouse-over and right-click for each segment?
public ChassisLink()
{
initializeLink();
}
private void initializeLink()
{
//Init stuff
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
//Paint the line(s)
}
//MouseListener events...
//When mouse-over on the line, display a tooltip
//When right clicking, display a different dialog
}
我认为我无法理解的问题是如何进行鼠标悬停或单击点检查。我是否使用矩形并检查鼠标当前是否包含在该矩形中,而只是忽略箭头的三角形部分?我对此非常乐观。然后我的问题变成了如何在包含机箱对象的现有 JPanel 之上显示这些链接对象;听起来像是 a 的候选人JLayeredPane
,但是在那条道路上有任何确认吗?
无论如何,我很感激人们能给我的任何意见。如果有些模糊,请随时要求进一步解释。
谢谢,
-富有的