Java,悬停组件时显示帮助标签

Java,悬停组件时显示帮助标签,java,jlabel,mouselistener,jcomponent,Java,Jlabel,Mouselistener,Jcomponent,我制作了一个包含大量JCheckBox和JTextField以及其他组件的程序 我有一个LinkedHashMap,其中包含每个JCheckBox的文本作为键,每个键的解释作为映射值。 当我的鼠标指向一个JCheckedBox的文本时,我希望一个JLabel出现在鼠标坐标处,显示相应键的值 我读到,为了能够在主JPanel上的任何位置设置我的JLabel位置,我需要将这个主JPanel的布局设置为null,然后重新绘制它。它起作用了 然而,当我从一个JCheckBox切换到另一个时,它们的位置突

我制作了一个包含大量JCheckBox和JTextField以及其他组件的程序

我有一个LinkedHashMap,其中包含每个JCheckBox的文本作为键,每个键的解释作为映射值。 当我的鼠标指向一个JCheckedBox的文本时,我希望一个JLabel出现在鼠标坐标处,显示相应键的值

我读到,为了能够在主JPanel上的任何位置设置我的JLabel位置,我需要将这个主JPanel的布局设置为null,然后重新绘制它。它起作用了

然而,当我从一个JCheckBox切换到另一个时,它们的位置突然改变,并在眨眼之间恢复到原来的位置。此外,JLabel位置(Y轴)类似于鼠标下方的100像素

你能帮我改进一下这个功能吗?您将在下面找到mouseLlistener所需的代码。“this”指的是主JPanel,我为它设置了一个布局。“this.lInformation”是我正在使用的帮助JLabel。 也许还有其他更简单的方法

public void mouseExited(MouseEvent e) {

    if("JCheckBox".equals( e.getComponent().getClass().getSimpleName() ) ) {
        this.lInformation.setVisible(false);
        this.lInformation = null;
        // Here we make the help label disappear
    }
}


public void mouseEntered(MouseEvent e) {

    String id = e.getComponent().getClass().getSimpleName();
    if("JCheckBox".equals( id ) ) {

    JCheckBox tempCB = (JCheckBox) e.getComponent();
    JPanel tempPanel = (JPanel) tempCB.getParent().getParent();

    this.lInformation = new JLabel( (String) this.FormattedFields.get( tempCB.getText()) );
    this.lInformation.setBounds(e.getXOnScreen(), e.getYOnScreen(), 40, 25);
    this.lInformation.setBorder(BorderFactory.createLineBorder(Color.yellow, 1));
    this.setLayout(null);
    this.add(this.lInformation);
    this.repaint();
    tempPanel.add(this.lInformation);
    this.setVisible(true);
    }
}

如果希望一个组件显示在另一个组件的顶部,则应将其添加到分层窗格中,而不是添加到同一容器中

建议阅读:

以及:


您也可能只是在谈论一个工具提示:

如果您希望一个组件显示在另一个组件的顶部,您应该将其添加到分层窗格中,而不是相同的容器中

建议阅读:

以及:


您也可能只是在谈论一个工具提示:

如果您希望一个组件显示在另一个组件的顶部,您应该将其添加到分层窗格中,而不是相同的容器中

建议阅读:

以及:


您也可能只是在谈论一个工具提示:

如果您希望一个组件显示在另一个组件的顶部,您应该将其添加到分层窗格中,而不是相同的容器中

建议阅读:

以及:


您也可能只是在谈论一个工具提示:

我认为您正在寻找
ToolTipText
,您所要做的只是获取要显示的描述值并将其设置为组件的工具提示

例如:

String description = getDescription();
jCheckBox.setToolTipText(description);
当您将鼠标悬停在该
组件上时,这将显示
说明


请阅读
Swing

中的更多信息,我认为您正在寻找
ToolTipText
,您所要做的只是获取要显示的描述值并将其设置为组件的工具提示

例如:

String description = getDescription();
jCheckBox.setToolTipText(description);
当您将鼠标悬停在该
组件上时,这将显示
说明


请阅读
Swing

中的更多信息,我认为您正在寻找
ToolTipText
,您所要做的只是获取要显示的描述值并将其设置为组件的工具提示

例如:

String description = getDescription();
jCheckBox.setToolTipText(description);
当您将鼠标悬停在该
组件上时,这将显示
说明


请阅读
Swing

中的更多信息,我认为您正在寻找
ToolTipText
,您所要做的只是获取要显示的描述值并将其设置为组件的工具提示

例如:

String description = getDescription();
jCheckBox.setToolTipText(description);
当您将鼠标悬停在该
组件上时,这将显示
说明


请在
Swing

中阅读更多有关内容,谢谢Kevin,我会阅读的,因为我以后肯定会需要它;)谢谢凯文,我会读的,因为我以后肯定会需要;)谢谢凯文,我会读的,因为我以后肯定会需要;)谢谢凯文,我会读的,因为我以后肯定会需要;)天哪。。。这就是我要找的东西,非常感谢你,萨拉!我无缘无故地头痛:)不客气,如果它解决了你的问题,你可以接受:)天哪。。。这就是我要找的东西,非常感谢你,萨拉!我无缘无故地头痛:)不客气,如果它解决了你的问题,你可以接受:)天哪。。。这就是我要找的东西,非常感谢你,萨拉!我无缘无故地头痛:)不客气,如果它解决了你的问题,你可以接受:)天哪。。。这就是我要找的东西,非常感谢你,萨拉!我无缘无故地头痛:)不客气,如果它解决了你的问题,你可以接受:)