Я изучаю здесь Java и пытаюсь разобраться с классами и узнать, как лучше ловить события мыши и т. Д. Для моей маленькой игры, поэтому, пожалуйста, наберитесь терпения и дайте несколько советов.
Основной класс моего проекта расширяет JFrame
и при построении добавляет к себе объект класса, который расширяет JPanel
. Это JPanel
охватывает все окно, и именно это я использую, чтобы рисовать вещи на экране. Затем у меня есть класс с именем Scene
, который ничего не расширяет, но хранит все ссылки на текущие объекты на экране и отвечает за их компиляцию и передачу обратно в JPanel
. Я не хотел помещать полный код события мыши в JPanel, потому что это было бы очень грязно, поэтому я решил создать еще один класс с именем MEs
и позволить каждой сцене иметь один. Я думал, что таким образом каждый mes
объект может легко получить доступ к объектам в каждой сцене. Итак, мой код выглядит так:
class DPanel extends JPanel {
Scene scCurrent;
public DPanel() {
scCurrent = new Scene();
addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent me) { scCurrent.mes.moved(me); }
});
...
}
...
но, конечно, inside scCurrent.mes.moved()
Я даже не знаю, как изменить курсор. Он не распознает setCursor()
там. Как я могу изменить курсор и получить доступ к объектам, которые находятся выше по дереву, как для переключения сцены? Или есть какое-то другое место, где я мог бы убрать свой код обработки событий мыши, который не будет расширять мою JPanel?