Java在鼠标悬停时在按钮上添加按钮

标签 java jbutton listener mouselistener

我想在鼠标悬停时将一个 JButton 添加到另一个 JButton。这是我的实际代码:

public class JFrameButton extends JFrame
{
public static void main(String[] args)
    {
    main();
    }

public static void main()
    {
    new JFrameButton();
    }

public JFrameButton()
    {
    boutonExterne = new JButton("Externe");
    boutonInterne = new JButton("Interne");

    boutonExterne.setLayout(new BorderLayout());
    setSize(200, 200);
    setLocation(100, 100);
    setVisible(true);
    boutonExterne.addMouseListener(new MouseAdapter()
        {
        @Override
        public void mouseExited(MouseEvent e)
            {
            boutonExterne.remove(boutonInterne);
            JFrameButton.this.revalidate();
            JFrameButton.this.repaint();
            }

        @Override
        public void mouseEntered(MouseEvent e)
            {
            JFrameButton.this.boutonExterne.add(boutonInterne, BorderLayout.SOUTH);
            JFrameButton.this.revalidate();
            JFrameButton.this.repaint();
            }

        });
    this.add(boutonExterne);
    }
private JButton boutonExterne,boutonInterne;

}

该产品此结果:
JButton on Jbutton
但是当我的鼠标悬停在“Interne”按钮上时,它会使按钮闪烁(出现和消失)。

最佳答案

正是如此。一旦您将鼠标从外部按钮的内容移到内部按钮上,就会调用内部按钮的 mouseExit,使您的内部按钮隐藏。

快速包看起来像:

    boutonExterne.addMouseListener(new MouseAdapter() {
        boolean ignoreExit=false;

        @Override
        public void mouseExited(final MouseEvent e) {
            if (!ignoreExit) {
                boutonExterne.remove(boutonInterne);
                JFrameButton.this.revalidate();
                JFrameButton.this.repaint();
            }
            ignoreExit=true;
        }

        @Override
        public void mouseEntered(final MouseEvent e) {
            JFrameButton.this.boutonExterne.add(boutonInterne, BorderLayout.SOUTH);
            JFrameButton.this.revalidate();
            JFrameButton.this.repaint();
            ignoreExit=true;
        }

    });

关于Java在鼠标悬停时在按钮上添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996052/

相关文章:

运行时出现 java.lang.NoClassDefFoundError : Need Class not on Classpath

java - 如何通过实例化类来使多个 JButton 单独工作?

Java 多按钮 Action

java - 在 BoxLayout 中调整 JButton 的大小

Java 和 SWT : Threads and Listeners

java - 错误 :(116) Error: Expected resource of type id [ResourceType]

java - 伽罗瓦/计数器模式 (GCM/NoPadding) 未使用

java - 添加鼠标监听器后进程不会关闭

java - SupportManager.getFragmentById 返回 null

java - 从回调列表中删除监听器的最优雅的方法是什么