Объект равняется NULL. Или как получить к нему доступ? - Java
Формулировка задачи:
У меня есть два класса
и
Иак вот в классе Start хочу получит массив panels, а объект gui NULL.
Я как то понимаю, что дело в то что он создается в отдельном потоке, но что сделать, как исправить, не знаю((
import javax.swing.*;
public class Start {
private static MainWindow gui;
private static BanknotePanel[] panels;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
gui = new MainWindow();
gui.setVisible(true);
}
});
panels = gui.getPanel(); //gui = NULL
System.out.println(panels.length);
}
}import javax.swing.*;
import java.awt.*;
public class MainWindow extends JFrame {
private BanknotePanel[] panel;
private JTextField textField = new JTextField();
public BanknotePanel[] getPanel() {
return panel;
}
public JTextField getTextField() {
return textField;
}
public MainWindow() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLayout(new GridLayout(3, 3));
int[] n = {1, 2, 5, 10, 20, 50, 100, 200, 500};
panel = new BanknotePanel[n.length];
for (int i = 0; i < n.length; i++) {
panel[i] = new BanknotePanel(n[i]);
add(panel[i]);
}
pack();
setLocationRelativeTo(null);
}
}Решение задачи: «Объект равняется NULL. Или как получить к нему доступ?»
textual
Листинг программы
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
gui = new MainWindow();
gui.setVisible(true);
}
});
Thread thread = new Thread(() -> {
while (gui == null) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
panels = gui.getPanel(); //gui = NULL
System.out.println(panels.length);
});
thread.start();
}