Наведите курсор на несколько кнопок в Java? - PullRequest
3 голосов
/ 11 февраля 2011

Возможно ли в Java при наведении курсора на одну кнопку заставить программу думать, что вы наводите курсор на несколько кнопок? Я использую многомерный массив с кнопками и хочу, чтобы 5 кнопок были надеты одновременно. (Все кнопки рядом с фактическим парением).

Есть идеи, как это сделать?

Примечание: я не использую JButtons, просто обычные кнопки. (Awt.Button)

EDIT Я явно не был достаточно ясен, и я прошу прощения за это. Вот скриншот того, что я ищу:

Hover

Итак, курсор находится над первым серым пространством, и все пространство рядом с ним имеет различный фон, однако они не считаются парящими над ним, что если мне нужно.

1 Ответ

3 голосов
/ 11 февраля 2011

Предполагая, что вы используете 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) {
    }

});

Нет причин, по которым вы не можете сохранить ссылку от MouseListener до List<Button>.Если работа с этими кнопками - дело слушателя, разработайте классы так, чтобы это произошло.

...