2013-04-26 32 views
0

我正在使用名爲CardPanel的JPanel子類來顯示我的圖像。在hitYourself()方法中,我試圖去除名爲currentPanel的CardPanel,將一個新的CardPanel實例分配給currentPanel字段,然後將新的CardPanel對象添加到JFrame中。出於某種原因,我不能從hitYourself()方法中移除面板,或添加新的CardPanel。當我把playYourself中的代碼放在play方法中時,它按預期工作。我不確定它的相關性,但hitYourself方法是通過添加到JButton的ActionListener調用的。我已經驗證ActionListener正在工作,並且該方法確實被調用。爲什麼我不能在hitMourself()中從JFrame中移除JPanel?爲什麼我不能從這個方法的JFrame中移除一個JPanel?

public void play(){ 
    yourCards.add(deckValues[getAvailableCardIndex()]); 
    yourCards.add(deckValues[getAvailableCardIndex()]); 
    dealerCards.add(deckValues[getAvailableCardIndex()]); 
    dealerCards.add(deckValues[getAvailableCardIndex()]); 
    currentPanel = new CardPanel(yourCards,dealerCards); 
    frame.add(currentPanel); 


    } 

    public void hitYourself(){ 

    yourCards.add(deckValues[getAvailableCardIndex()]); 
    frame.remove(currentPanel); 
    currentPanel = new CardPanel(yourCards,dealerCards); 
    frame.add(currentPanel); 

    } 
+0

爲什麼不使用CardLayout佈局管理器? – 2013-04-26 02:25:11

回答

0

您是否嘗試重新繪製屏幕?

+0

並調用'revalidate()'。 – 2013-04-26 02:23:31

+0

我不能重新繪製CardPanel,因爲它需要通過構造函數提供的更新的ArrayList,這就是爲什麼我要刪除它並創建一個新的。 – 2013-04-26 02:24:47

+0

我不熟悉重新驗證,但我會查找並嘗試它。我對此很新,僅在大學就讀過一門編程課 – 2013-04-26 02:25:51

相關問題