У меня есть класс MyClass, который при запуске инициализирует AWT-кадр графического интерфейса (" Launch.java "), вызывая основной метод графического интерфейса.
в этом основном методе у меня есть EventQueue.invokeLater, чей runnable фактически выполняет всю инициализацию. Одной из частей инициализации является установка объекта с именем " controller ".
После вызова основного метода GUI из MyClass, я хочу getController () контроллер, но он возвращает ноль, и я не знаю почему.
когда я отлаживал его, я помещал точку останова в Launch.java на строку, где создается контроллер ( controller = новый контроллер (textArea) ), и я заметил, что тогда он не равен нулю, но возвращается в MyClass значение null, когда я вызываю Launcher.getController () .
Что я делаю не так ?? Спасибо!
MyClass:
public class MyClass{
private static boolean isInitialized = false;
private Controller control;
public static void main(String[] args){
if (!isInitialized)
{
Launch.main(new String[1]);
control = Launch.getControl(); //here control is null!
isInitialized = true;
}
//irrelevant code here
}
}}
Launch.java:
public class Launch {
private JFrame frame;
private JTextField inputField;
DefaultListModel model;
private static Controller controller;
JSpinner spinner;
public static Controller getControl()
{
return controller;
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Launch window = new Launch();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Launch() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
//some code here... (here controller is null)
controller = new Controller(textArea);
//some code here... (here controller is not null - during debug)
}
}