2014-01-28 23 views
-1

我創建了一個加載框架的小程序,我在其中添加了一些面板。 當我點擊某個按鈕時,它應該顯示一些面板並隱藏其他。 我正在經歷一些難以做到的事情,即使我沒有真正弄清楚setVisible(true),repaint()和validate()(我的一些朋友向我建議)之間的區別。setVisible(true),repaint()和validate()之間有什麼區別?

我希望你能讓我明白!

謝謝。

+0

你指的是再次驗證組件()? http://stackoverflow.com/questions/1097366/java-swing-revalidate-vs-repaint – Sorter

+0

我不知道revalidate(),無論如何,我試圖使用它,它不工作。我也看看你的鏈接,但它不幫助我。 我有這樣的方法: [鏈接](http://pastebin.com/RM1LLd0v) 每次我調用該方法的「名單」的內容是不同的,但將JList總是顯示相同的內容。 – smartmouse

回答

1

仔細閱讀JComponent的API。用法如下:

  1. setVisible - 它會隱藏或顯示你的組件。如果你將它設置爲false,你根本看不到它。
  2. repaint() - 在需要重繪實際像素時調用,這是自動完成的。例如,當您在GUI上移動窗口然後將其移開時使用它。被覆蓋的部分需要redrawan。
  3. validate() - 當您的GUI佈局發生變化並且您需要經理替換並重新繪製GUI時,您應該調用此方法。

這比這更復雜一點,所以再次仔細閱讀API。

+0

我有這種方法: [鏈接](http://pastebin.com/RM1LLd0v) 每次我調用方法的「列表」內容是不同的,但JList顯示總是相同的內容。 – smartmouse

+0

@smartmouse我沒有看到你鏈接的方法列表。如果JList的內容未更新,那麼您可能不更新數據模型。 – rhobincu

+0

是的,它已更新。 我解決了在viewPanel.setVisiblue(true)後用this.add(viewPanel)去除。 – smartmouse

0

setVisible(true):設置組件使其可見。

repaint():調用組件上的paint方法。

重新驗證():基於更新的根組件

相關問題