我编写了我的程序分为两部分,我先写了实际的功能,然后再将GUI显示出来。 我需要等待/暂停用户在继续执行代码之前单击另一个类(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
这看起来像我可能会用到的东西。我可能必须使用反射,因为公共无效运行(最后一个回调)硬编码只接受类型一类,但我需要其他类调用运行。 – altoids
@Miss_poker你可以让所有的类像'One'实现一个接口(让我们来说'Caller'),它有一个方法'public void processSelectedImages(List selectedImages)''。然后,'DisplayImages.run()'将变为'public void run(最终的调用者调用者)'。如果这还不够好,请编辑您的问题,以提供有关您的限制的说明 –