Вы создаете объект Handler, хорошо, вы добавляете его к объекту Canvas (this
- почему Canvas?), И вы создаете объект окна «верхнего уровня», который находится вфакт типа Window, но вы никогда не добавляете Canvas в окно, и при этом вы не отображаете окно, поэтому нет никаких оснований ожидать, что этот код действительно будет работать.
Теперь, я предполагаючто существует больше кода, который вы нам не показываете, и это может иметь значение, и если это так, рассмотрите возможность создания и публикации адекватного MCVE , чтобы дать нам лучшее понимание вашей проблемы.
ОК, я создал MCVE с вашим кодом:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends Canvas {
private static final long serialVersionUID = 1673528055664762143L;
private static final int WIDTH = 416, HEIGHT = 439;
public Main() {
Procode238Window window = new Procode238Window(WIDTH, HEIGHT, "DARRAGH", this);
this.addMouseListener(new ClickEvent());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new Main();
});
}
}
class ClickEvent extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
System.out.println("hello");
}
}
// renamed to avoid clashing with the java.awt.Window class
class Procode238Window extends Canvas {
private static final long serialVersionUID = 6733885629776844621L;
public Procode238Window(int width, int height, String title, Main main) {
JFrame frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.add(main);
frame.setVisible(true);
// !! main.start(); // this method doesn't exist
}
}
и он работает
Обратите внимание, что:
- Весь этот код может быть скопирован и вставлен в один файл IDE и запущен и имеет необходимый основной метод, оба из которых необходимы для того, чтобы он был MCVE
- Я переименовал класс Window, чтобы избежать конфликта имен и путаницы с классом
java.awt.Window
- Ваш код вызывает метод
.start()
основного класса, метод не показан.Может ли это вызывать проблемы?