簡體   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