在某些情况下,我需要一个JTabbedPane保留在一个窗格上,直到用户提供某些信息。基本上,当这种情况发生时,我需要将当前窗格变为模态。
我该如何实现?我以为我可以捕捉窗格更改时触发的任何事件,并重置回我想要坚持的窗格。但我担心这不会是正确的,取决于事件实际触发的时间,转换到新窗格将发生之后我调用方法将窗格设置为窗格我想要或其他一些类似的竞争条件。有没有更好的办法?有没有办法让这种方法有效?
答案 0 :(得分:6)
我建议将其他标签设置为禁用。这具有向用户反馈提供他们无法单击选项卡的积极效果。否则他们可能疯狂地点击并想知道为什么它不会让他们离开标签。
只需在完成必填字段后再次启用它们。
答案 1 :(得分:2)
只需禁用JTabbedPane:
pane.setEnabled(false);
如果所有字段都已正确设置(或任何条件),则启用它
答案 2 :(得分:2)
您可以使用CardLayout和JPanels来执行您想要的操作,而不是使用JTabbedPanes。由于您需要使用选项卡式窗格,我建议一旦达到条件,您希望强制用户停留在该选项卡上,请使用该选项卡将该选项卡设置为所选选项。
setTabComponentAt(int index, Component component)
或
setSelectedIndex(int index)
设置一个标志,指示用户在完成您希望他们做的任何操作之前不应该继续操作,并使用setEnabledAt(int index, boolean enabled)
禁用所有其他选项卡。
用户完成所需的操作后,继续相应地设置标记并重新启用其他标签。
我没有时间尝试解决方案,但我认为它应该可行。