Наведите курсор на несколько кнопок в Java?

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

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

Примечание. Я не использую JButtons, только обычные кнопки. (авт.Кнопка)

ИЗМЕНИТЬ Очевидно, я недостаточно ясно выразился, и я приношу извинения за это. Вот скриншот того, что я ищу:

Hover

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


person Hanna    schedule 11.02.2011    source источник
comment
Так вы действительно имеете в виду в Swing, верно?   -  person Matt Ball    schedule 11.02.2011
comment
Хм, разве Swing не будет использовать JButtons?   -  person Mark Peters    schedule 11.02.2011
comment
Тогда что, черт возьми, ты используешь? Или это должно быть секретом?   -  person Hovercraft Full Of Eels    schedule 11.02.2011
comment
Я импортировал только awt.Button. И я просто использую обычные кнопки, а не Jbuttons, это действительно так запутанно? о0   -  person Hanna    schedule 11.02.2011
comment
Это может быть AWT, SWT, Android или бог знает что еще. Это только сбивает с толку, если мы не можем читать мысли.   -  person Hovercraft Full Of Eels    schedule 11.02.2011
comment
Итак, вы хотите, чтобы 4 кнопки следовали за той, на которую наведен курсор мыши, в каком-то выбранном состоянии?   -  person josefx    schedule 11.02.2011
comment
Да! У меня есть это, поэтому цвет фона изменен, но я бы предпочел какое-то изменение состояния!   -  person Hanna    schedule 11.02.2011
comment
@Johannes, наведенный курсором, выглядит как фокус, который вы можете проверить с помощью прослушивателя фокуса. Сам фокус ограничен одним компонентом в окне, поэтому вам придется самостоятельно моделировать любое дополнительное состояние. (Отказ от ответственности, мои знания об awt довольно ограничены)   -  person josefx    schedule 11.02.2011


Ответы (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) {
    }

});

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

person Synesso    schedule 11.02.2011
comment
mouseMoved тоже нужно пересылать. - person Paŭlo Ebermann; 11.02.2011