1

我有一个带有两个选项卡的简单 JTabbedPane 组件。当在其中一个选项卡上触发按钮事件时,我希望立即将当前视图设置为另一个选项卡。我可以在相关按钮的 actionPerformed 方法中使用 setSelectedIndex(int) 成功切换当前选项卡,但按钮事件的剩余功能有时可能需要一段时间才能完成。

似乎 setSelectedIndex(int) 更改不会立即发生,只有当按钮单击/按下触发的 actionPerformed 方法的主体完成时才会发生。

我想在单击/按下按钮时切换选项卡的原因是,用户可以在另一个选项卡的文本区域中看到一条消息,告诉他们“正在处理,请稍候”等,而按钮的其余部分单击执行功能。该功能的结果在到达时将替换“...请稍候”消息。

所以现在发生的事情是我单击按钮,它在该选项卡上冻结,直到按钮功能完全完成,然后切换。所以“...请稍候”消息实际上甚至从未见过。

我不知道该怎么办。也许为“功能”创建一个新线程,并让按钮单击事件启动线程,以便按钮事件可以在等待结果时完成并切换选项卡。只是大声思考。任何帮助表示赞赏。

-抢

4

1 回答 1

2

在我看来,您的线程问题比什么都重要,这会冻结您的 GUI,使其在完成之前完全无响应,从而延迟您的选项卡式窗格交换。如果您在您的操作执行方法中运行任何长时间运行的进程,请改为在后台线程中执行它们,例如由 SwingWorker 提供的,然后您的 GUI 将变得更具响应性。

有关这方面的详细信息,请查看本教程:Swing 中的并发

如果尽管有这个建议,您仍然遇到问题,那么您可能不得不发布一些有问题的代码。如果您可以创建一个可重现该问题的小型可编译和可运行应用程序,那么最好是SSCCE

¡

于 2011-04-17T13:55:51.860 回答