У меня есть jframe, который я хочу отобразить во время работы моего основного кадра.Я хочу приостановить мой основной код, пока пользователь не выполнит необходимые действия с другим кадром.Я прочитал много решений, но мне нужно, чтобы это было сделано, чтобы мой код полностью понял и понял.я не хочу использовать jdialog, как я видел в качестве ответа раньше.Моя главная цель - лучше понять многопоточность, чтобы я мог использовать то, что я изучаю, в разных случаях.
С созданным мною кодом при запуске потока загружается только один кадр, и никаких других функций в нем нет.(фрейм прост, у него есть метка, список, из которого пользователь выбирает, и кнопка, по сути, возвращающая выбранное значение списка.) Это похоже на то, что поток отрезан от завершения или что-то в этом роде.
вот мой класс, вызывающий экран:
public class myThread implements Runnable {
String result = null;
public void run() {
MessageScreen ms = new MessageScreen();
ms.setVisible(true);
}
public String getResult() {
return result;
}
public void setResult(String AS) {
result = AS;
}
}
в моем основном коде вызывается метод, который возвращает значение String [], с этим методом в какой-то момент у меня естьследующий код, вызывающий новый поток для получения значения, необходимого для возврата в исходном методе main:
myThread mt = new myThread();
Thread t = new Thread(mt);
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
myreturn = new String[] {"true", mt.getResult()};
без перечисления всего кода для второго кадра, когда пользователь нажимает кнопку, и в концеслушатель привязан к кнопке и нажмите кнопку i, чтобы закрыть кадр и вернуть строку, которая была выбрана из списка:
jf.dispose();
myt.setResult(AdminSelection);
в классе кадра, у меня объявлены следующие переменные экземпляра:
String AdminSelection = null;
myThread myt;
Надеюсь, этого достаточно, чтобы кто-нибудь помог мне разобраться и понять, что здесь не так.