2013-05-01 24 views
0

我開始爲我的國際象棋學校項目創建GUI。當我試圖實現數字移動時,我被嚴重卡住了。Java GUI getComponent(),panel.remove()

我有一個窗口LayerPane,它代表主應用程序窗口。在這個LayerPane中,我有下一個棋盤窗格,我在其中放置了一個測試窗格。

所以它像 - 窗口 - 棋盤 - 測試

林努力讓自己在點擊這樣的測試窗格中消失。 (由NetBeans的生成的代碼)

private void testingPaneMouseClicked(java.awt.event.MouseEvent evt) {           
    Component Fig = evt.getComponent(); 

    System.out.println(Fig); 

    jLayeredPane1.remove(Fig); 
    jLayeredPane1.repaint(); 
} 

但每當我在測試窗格中單擊,沒有任何反應。原因是getComponent()方法返回棋盤窗格而不是測試窗格。

任何建議,如何獲得測試窗格?

當我嘗試直接刪除它,它當然有效。

jLayeredPane1.remove(testingPane); 

任何幫助表示讚賞!

非常感謝!

+0

爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 – 2013-05-02 04:18:38

回答

1

呼叫revalidate(),是應該做的伎倆:

panel.remove(child); 
// tell the panel to re-calculate its internals 
panel.revalidate(); 
// now repaint - doesn't get automatically called 
panel.repaint() 
+0

謝謝你的回覆iluxa。但是我已經嘗試過,比如,包括重新驗證在內的所有內容。 問題是,evt.getComponent();不會識別棋盤上的孩子,而是棋盤本身,所以孩子不能在下一步中刪除。 – jankoritak 2013-05-02 07:00:34

+0

問題似乎是解決問題的方法。我添加了偵聽器來測試窗格,而不是chessabord,它似乎工作正常。 – jankoritak 2013-05-02 08:05:36