将鼠标悬停在Java中的多个按钮上?

时间:2011-02-11 04:39:23

标签: java button multidimensional-array awt

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

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

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

修改 我显然不够清楚,我为此道歉。 这是我正在寻找的截图:

Hover

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

1 个答案:

答案 0 :(得分:3)

假设您正在使用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<Button>的引用。如果是侦听器的业务是处理这些按钮,那么设计你的类以便它发生。