2011-08-24 71 views
2

在我的程序中,我有兩個JFrame實例。當我點擊next按鈕時,我想顯示下一幀並隱藏當前幀。所以我用this.setVisible(false)和新的Next().setVisible(true)。但在Next窗口,如果我點擊back按鈕我想設置前一幀再次可見,下一幀必須結束(這意味着它必須退出)。如何在JFrame中使用setVisible?

有沒有特殊的方法來做到這一點?我該怎麼做?

+4

爲什麼不在一個畫面中切換面板,例如使用'CardLayout'? – Thomas

回答

6

考慮使用CardLayout而不是尋找有多少個JFrames。然後..

  • 只有一個的JFrame將需要
  • 任何下一步的/後退操作將只卡

有很多examples in this forum之間切換 - 例如如here所示。

+0

+1,CardLayout經理應該在這裏一定要考慮。 – mre

+0

不,我正在創建搜索框。在主菜單(框架),如果我點擊搜索按鈕它必須打開搜索框架,我想隱藏主菜單。但是,如果我退出搜索。我必須再次顯示主菜單。我不能銷燬主菜單對象。因爲保存了一些信息。我想調用以前的對象。這意味着我想再次將其可見性設置爲真。 –

+3

@JKAUSHALYA,它不會破壞組件,它只是隱藏它。爲了顯示前一個組件,需要簡單調用'show(...)'。這真的不是那麼難。這個佈局管理器正是你想要的。也許你應該閱讀@mKorbel鏈接到你的教程。 – mre

2

如果你想銷燬釋放所有相關資源的JFrame,你可以在其上面調用dispose()方法。

2

您可以將JFrames放置在列表數據結構中,並根據您顯示的窗口保留對當前位置的引用。這樣就可以輕鬆移動到下一個和上一個。但請注意,添加到列表中的每個框架都將使用內存,並在將其放入列表中時具有其狀態。

如果您嘗試創建像UI這樣的嚮導,則應查找Sun(oracle)tutorial here

+0

不,我正在創建搜索框。在主菜單(框架),如果我點擊搜索按鈕它必須打開搜索框架,我想隱藏主菜單。但是,如果我退出搜索。我必須再次顯示主菜單。我不能銷燬主菜單對象。因爲保存了一些信息。我想調用previos對象。這意味着我想再次將其可見性設置爲真。 –

+0

@JKAUSHALYA我不介意讀者,如果我記得很多次我在基本的東西上犯了錯誤,爲了幫助你必須使用可運行的代碼編輯你的文章,它顯示了你的問題,否則任何東西都只會是鏡頭黑暗的 – mKorbel

3

即奇數&古怪GUI。我建議爲主GUI運行JFrame,並且當用戶想要搜索時,彈出JOptionPane(或模式JDialog)接受要搜索的詳細信息。這不會產生上述效果,但會遵循最終用戶的「最少驚喜之路」。

+0

看起來應該是正確的答案,我的人也是+1 – mKorbel

+0

@mKorbel我也喜歡'CardLayout'解決方案 - 但由於OP不希望那樣.. –

0

在next()窗口中創建主窗口的實例,並使用您選擇隱藏主窗口的相同方法,例如,如果您的主窗口被命名爲gui,那麼我們必須做的是。

gui obj = new gui(); 

,如果你後退按鈕點擊比現在做這些也

this.setVisibility(false); 
obj.setVisibility(true); 

這就是你需要的。

祝你好運。

相關問題