Плохое событие на панели Java - PullRequest
2 голосов
/ 18 мая 2010

У меня есть панель Java с 4 кнопками. Когда я нажимаю на одну из этих кнопок, появляется новая рамка, а первая скрывается с setVisibile(false). В этом новом окне у меня есть другая кнопка, но когда я нажимаю на нее, я получаю событие, соответствующее четвертой кнопке первого окна. Повторное нажатие на кнопку делает свое дело, но, конечно, это не приемлемо. Я что-то пропустил? Я просто показываю кадры с

nameOfTheFrame.setVisible(true);

и у меня есть MouseListener на каждой кнопке.

Код последней кнопки просто:

System.exit(0);

EDIT

Пример кода:

    private void btn_joinGamePressed(java.awt.event.MouseEvent evt) {
            GraphicsTools.getInstance().getCreateGame().setVisible(false);
            GraphicsTools.getInstance().getMainPanel().setVisible(false);
            GraphicsTools.getInstance().getRegistration().setVisible(true);
}

GraphicsTools - это синглтон.

РЕДАКТИРОВАТЬ 2 Еще немного информации. Я заметил, что на MAC OS работает нормально. Проблема возникает только в Linux и Windows.

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Это должно происходить из-за ваших слушателей мыши. Может быть, это идентифицирует старую кнопку в вашем первом нажатии, которая находится в том же месте новой кнопки (это только мое предположение).

Изменить слушателей мыши на слушателей действий. Для кнопки достаточно, если у вас есть слушатель действия.

Попробуйте это.

0 голосов
/ 18 мая 2010

Попробуйте вызвать revalidate() на кадрах, когда вы измените их жизнеспособность.

Edit:

Это может быть что-то с созданием кадров. Убедитесь, что вы вызываете 'pack () `для фреймов.

...