Общая помощь/советы по кнопкам и всплывающим окнам

Привет и спасибо заранее!

Я работаю над игровым проектом и не собираюсь создавать базовый графический интерфейс. Короче говоря, это то, чего я пытаюсь достичь:

Основным компонентом является панель J(Scroll), на которой размещены движущиеся внутриигровые объекты. Я хочу, чтобы игроки могли навести указатель мыши на объект и получить какое-то информационное всплывающее окно, привязанное к местоположению наведенного объекта. Во-вторых, я хочу, чтобы пользователь мог щелкнуть объект левой кнопкой мыши, чтобы «выбрать» объект, а также иметь возможность щелкнуть правой кнопкой мыши, чтобы открыть всплывающее меню рядом с объектом.


person TRU7H    schedule 22.09.2012    source источник
comment
Так в чем тут запрос? Вы хотите знать, как обрабатывать события левого и правого клика в свинг? Или вы открыты для любого стека технологий и хотите знать лучший из возможных подходов?   -  person Anshu    schedule 22.09.2012
comment
Я любитель, когда дело доходит до графического интерфейса. Поэтому я хотел бы знать, с чего начать и какие компоненты я должен учитывать при создании этого. Просто общий совет, как достичь моей цели.   -  person TRU7H    schedule 22.09.2012


Ответы (1)


Вы должны добавить прослушиватель мыши на свою панель. Так:

panel.addMouseListener(new MouseAdapter() { 
  public void mousePressed(MouseEvent me) { 
    System.out.println(me); 
  } 
});
person Mikhail Selivanov    schedule 22.09.2012
comment
хорошо .. но как мне связать щелчок мыши с компонентом, который был нажат? единственный способ, который я знаю, включает полигоны и метод contains(); и я не думаю, что это путь ;D - person TRU7H; 22.09.2012
comment
к какому типу объектов относятся компоненты, которым вы хотите назначить mouselistener? - person peshkira; 22.09.2012
comment
хорошо, если вы имеете в виду объект, на который я хочу щелкнуть, на самом деле еще ничего.. Это класс, который я построил, напоминающий судно, но на этом пока не так много графики. - person TRU7H; 22.09.2012
comment
в вашем классе есть изображение? если вы не хотите иметь дело с многоугольниками, вы можете проверить кадр изображения на наличие кликов, и если происходит щелчок по кадру, проверьте, указывает ли этот клик на альфа-канал - person Mikhail Selivanov; 22.09.2012
comment
Итак, я должен добавить слушателя к моему изображению? что я могу понять, но ты потерял меня на альфа-канале.. - person TRU7H; 22.09.2012
comment
Я имею в виду, что вы должны добавить прослушиватель на панель, в этом слушателе каждый компонент должен проверяться на пересечение координат клика мыши и кадра изображения компонента. Если ваши изображения имеют альфа-канал (или любую метку пустого места, поэтому кадр изображения больше, чем компонент), слушатель также должен проверить, указывает ли щелчок точно на цветную часть, а не на альфа-канал. - person Mikhail Selivanov; 22.09.2012
comment
Soo.. Я добавляю прослушиватель на панель, заставляю его проверять, пересекает ли щелчок изображение, и убеждаюсь, что он не щелкнул прозрачную часть изображения. Я думаю, что понял, но как мне точно проверить, пересекается ли он с изображением? - person TRU7H; 22.09.2012
comment
Знаете ли вы координаты и ширину/высоту ваших изображений? Если это так, вы можете создать список компонентов и добавить проверку для каждого изображения в этом списке на пересечение с координатой щелчка мыши. - person Mikhail Selivanov; 22.09.2012