我有一個與Java有關的普遍問題。如何刷新Java中的GUI?
我在寫一個具有GUI菜單的應用程序。我試圖根據單選按鈕的選擇更改GUI菜單的一部分。
我需要:
重繪整個窗口或只需要更新的那部分:
setVisible(true)?
如果我只是使用的語句從#1以上。該GUI是罰款 - 直到我將鼠標移到它上面,然後我看到上一個按鈕的選擇。我究竟做錯了什麼?
我有一個與Java有關的普遍問題。如何刷新Java中的GUI?
我在寫一個具有GUI菜單的應用程序。我試圖根據單選按鈕的選擇更改GUI菜單的一部分。
我需要:
重繪整個窗口或只需要更新的那部分:
setVisible(true)?
如果我只是使用的語句從#1以上。該GUI是罰款 - 直到我將鼠標移到它上面,然後我看到上一個按鈕的選擇。我究竟做錯了什麼?
Swing組件具有repaint(),revalidate()和doLayout()方法。其中一個應該可以重新繪製你想要的任何部分。但是,doLayout不是你應該承擔的責任,這是佈局引擎的責任。
您可能還想查看this post,第一個反應有一個很好的解釋,並鏈接到一篇文章,更詳細。
就問題的第二部分而言,我不確定,但我們可能需要查看一些代碼才能得到一個想法。 「替換區域」實際上是否從視圖中刪除?
我需要導入什麼來使用repaint()或doLayout()? – ironmantis7x
你不會需要進口任何額外的費用,這些應該是你正在使用的Swing組件的方法 - 看文檔http://docs.oracle.com/javase/6/docs/api/java/awt/Component html的。 Component的任何子類都應該有這些方法可用。 – shortstuffsushi
你避免直接調用的doLayout,如果你發現自己在一個位置,這是一個工作,然後你做一件事錯了嘛。 doLayout應該只會影響當前的容器。相反,使用invalidate而不是 – MadProgrammer
調用頂層組件上的revalidate()
。
我是新來的Java,所以請耐心等待,我....究竟如何,我稱重新驗證()頂級組件?每次嘗試在repaint()後插入它時,都會發生編譯器錯誤。 – ironmantis7x
..在我的應用程序中,用戶選擇他們想要的頂級測試的設備平臺類型(該選擇是左邊一組兩個單選按鈕)。當用戶選擇Android或iOS時,複選框的中心分組會發生變化,以反映他們可以測試的一組Android設備或他們可以測試的一組iOS設備。
CardLayout
。
我認爲有一個paint()方法 – amphibient
repaint()可能是你wnat – jozefg
我只是嘗試repaint()方法,它根本不起作用。我嘗試setVisible(true)以及那也沒有工作。 – ironmantis7x