Объект равняется 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д