Я написал свою программу в двух частях, сначала написал фактическую функциональность, а затем графический интерфейс, чтобы отобразить все. Мне нужно подождать/приостановить, чтобы пользователь нажал кнопку «Готово» из другого класса (DisplayImages), прежде чем продолжить выполнение кода. Мой класс DisplayImages содержит список MyImage. Изображения затем отображаются в jpanel, и пользователь выбирает пару изображений , а затем нажимает кнопку «Готово». Как я могу ждать ответа или что-то в этом роде?java Пауза код и ждать ввода пользователя
public class One{
ArrayList<MyImage> images = new ArrayList<MyImage>();
public One(){
DisplayImages displayOne = new DisplayImages(images);
displayOne.run();
//I need to pause/wait here until the user has pressed the done button
//in the DisplayImages class
images.clear();
images = displayOne.getSelectedImages();
//do stuff here with images arrylist
}
}
DisplayImages класса
public class DisplayImages extends JFrame{
private ArrayList<MyImage> images = new ArrayList<MyImage>();
private ArrayList<MyImage> selectedImages = new ArrayList<MyImage>();
public DisplayImages(ArrayList<MyImage> images){
this.images = images;
}
public void run(){
//code creates a jpanel and displays images along with a done button
//user presses done button
done.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
setVisible(false);
selectedImages = getSelectedImages();
//here I would send a signal to continue running in class One
}
});
}
private ArrayList<MyImage> getSelectedImages(){
//code returns list of all the images the user selected on JPanel
return results;
}
}
+1 Конечно, слушатель лучше, чем мое предложение, но я хотел, чтобы это было легко. – Stephan
Это похоже на то, что я могу использовать. Возможно, мне придется использовать Reflection, поскольку public void run (final One callback) жестко закодирован, чтобы принимать только классы типа 1, но мне понадобятся другие вызовы, вызывающие вызов. – altoids
@Miss_poker Вы можете сделать все классы как 'One' реализовать интерфейс (скажем,' Caller'), который будет иметь один метод 'public void processSelectedImages (List selectedImages)'. Затем 'DisplayImages.run()' изменится на 'public void run (конечный Caller caller)'. Если это еще недостаточно для вас, пожалуйста, отредактируйте свой вопрос, чтобы дать разъяснения относительно ваших ограничений. –