繁体   English   中英

如何冻结JTabbedPane的一个窗格?

[英]How can I freeze on one pane of a JTabbedPane?

在某些情况下,我需要一个JTabbedPane保留在一个窗格上,直到用户提供某些信息。 基本上,当这种情况发生时,我需要将当前窗格变为模态。

我该如何实现呢? 我以为我可以捕捉窗格更改时触发的任何事件,并重置回我想要坚持的窗格。 I call the method to set the pane to the pane I want, or some other similar race condition. 但是我担心这不会是正确的,取决于事件实际触发的时间, 我调用方法将窗格设置为我想要的窗格或其他类似的竞赛将发生到新窗格的转换条件。 有没有更好的办法? 有没有办法让这种方法有效?

我建议将其他选项卡设置为禁用。 这具有向用户反馈提供他们无法单击选项卡的积极效果。 否则他们可能疯狂地点击并想知道为什么它不会让他们离开标签。

只需在完成必填字段后再次启用它们。

只需禁用JTabbedPane:

pane.setEnabled(false);

如果所有字段都已正确设置(或任何条件),则启用它

您可以使用CardLayout和JPanels来执行您想要的操作而不使用JTabbedPanes。 由于您需要使用选项卡式窗格,我建议一旦达到条件,您希望强制用户停留在该选项卡上,请使用该选项卡将该选项卡设置为所选选项卡。

setTabComponentAt(int index, Component component) 

要么

setSelectedIndex(int index) 

设置一个标志,指示用户在完成您希望它们执行的任何操作之前不应该继续操作,并使用setEnabledAt(int index, boolean enabled)禁用所有其他选项卡。 一旦用户完成了他们所需的内容,就可以继续相应地设置标志并重新启用其他选项卡。

我没有时间尝试解决方案,但我认为它应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM