我正在使用具有两个框架的JAVA桌面应用程序,用户单击框架1上的一个按钮,基于所选选项的响应将更新到数据库。在更新响应时,应显示第2帧。
如果在数据库更新之前将第2帧设置为可见,则显示第2帧,但内容为空,即不显示第2帧的面板。但是一旦数据库更新完成,就会显示框架的内容。
db.accommodations.find({ name : { $gt: { $size : 1 } }})
第2帧的内容应在数据库更新进行时或之前显示。
答案 0 :(得分:0)
对于这种特殊情况,建议您使用:
中所示的tutorial大致情况:
protected String doInBackground() throws Exception {
try {
Thread.sleep(5000); //Simulates long running task (your database update)
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Updated"; //Returns the text to be set on your status JLabel once the update is done
}
@Override
protected void done() {
super.done();
try {
// Here update your GUI or do whatever you want to do when the update is done.
textfield.setText(get()); //Set to the textField the text given from the long running task
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
在您的ActionListener
上类似:
private ActionListener listener = (e -> {
frame2.setVisible(true); //suggested use of cardlayout and display nextCard here.
worker.execute(); //Initializes long running task
});
但是我建议您不要使用多个JFrames
:The Use of Multiple JFrames: Good or Bad Practice?,而应使用CardLayout,for example