【问题标题】:Hover over multiple buttons in Java?将鼠标悬停在Java中的多个按钮上?
【发布时间】:2011-02-11 04:39:22
【问题描述】:

在 Java 中,当您将鼠标悬停在单个按钮上时,是否有可能让程序认为您将鼠标悬停在多个按钮上? 我正在使用带有按钮的多维数组,并且希望能够一次将 5 个按钮悬停在上面。 (实际悬停附近的所有按钮)。

关于如何做到这一点的任何想法?

注意:我没有使用 JButton,只是使用常规按钮。 (awt.Button)

编辑 我显然不够清楚,我为此道歉。 这是我正在寻找的屏幕截图:

因此,光标悬停在第一个灰色空间上,并且它旁边的所有空间都有不同的背景,但是,如果我需要的话,它们不被视为悬停在上面。

【问题讨论】:

  • 所以您的意思是“在 Swing 中”,对吗?
  • 嗯,Swing 不会使用 JButtons 吗?
  • 那你用的是什么tarnation?或者它应该是一个秘密?
  • 我只导入了awt.Button。而且我只是使用常规按钮,而不是 Jbuttons,这真的很混乱吗? o0
  • 这可能是 AWT、SWT、android,或者天知道还有什么。如果我们不能读心,那只会令人困惑。

标签: java button multidimensional-array awt


【解决方案1】:

假设您使用的是MouseListener,当在主按钮上调用mouseEntered(MouseEvent e) 方法时,在所有其他按钮的所有侦听器上显式调用相同的方法,传递给您的事件。 mouseExited(MouseEvent e) 方法同上。

由您负责维护从主按钮到从属按钮的引用。

从属按钮的侦听器将收到一个引用主按钮的事件。如有必要,创建您的侦听器并引用它们所附加到的按钮,以便您可以在接收事件时对该按钮进行操作。

编辑:

这就是我所说的那种事情。有帮助吗?

final List<Button> subordinateButtons = Arrays.asList(new Button(), new Button(), new Button());
Button myButton = new Button();
myButton.addMouseListener(new MouseListener() {

    public void mouseEntered(MouseEvent e) {
        for (Button subordinateButton : subordinateButtons) {
            subordinateButton.setBackground(Color.GRAY);
        }
    }

    public void mouseExited(MouseEvent e) {
        for (Button subordinateButton : subordinateButtons) {
            subordinateButton.setBackground(Color.LIGHT_GRAY);
        }
    }

    public void mouseClicked(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

});

没有理由不能保留从 MouseListenerList&lt;Button&gt; 的引用。如果侦听器的工作是处理这些按钮,那么请设计您的类以使其发生。

【讨论】:

  • mouseMoved 也应该转发。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多