我想在Spring-Boot应用程序中为我的Swing UI组件使用依赖注入,并且很难弄清楚如何在Event Dispatch Thread上正确执行UI行为。Swing UI弹簧启动
我想出什么样的主意首先是这样的:
应用
@SpringBootApplication
public class App {
private static AppView view;
@Bean
public AppView appView() {
return view;
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(() -> view = new AppView());
SpringApplication app = new SpringApplication(App.class);
app.run(args);
}
}
APPVIEW
public class AppView extends JFrame {
...
@Inject
private DependencyWithTimeConsumingOperations backendController;
@Inject
private JPanel someChildComponent;
@PostConstruct
public void init() {
constructView(); // inits frame properties and child components
showView();
}
private void showView() {
SwingUtilities.invokeLater(() -> {
pack();
setVisible(true);
});
}
...
}
当某些UI事件发生后端依赖被调用。我观察到的是,后端调用在EDT上执行而不是主应用程序线程,我认为这很糟糕。据我所知,Swing没有太多经验,只有在UI上执行UI更新。
有没有更好的方法来连接我的依赖关系,以便一切都在其正确的线程中执行?到目前为止我能发现的东西似乎有点过时,或者我明白不明白答案:-)
该项目实际上已经睡前不久。但是既然你指出了我的'Denkfehler',我接受你的答案。谢谢。 – nansen