如何重新繪製JPanel
上的本地字段?我在寫一個蛇遊戲。當蛇移動到下一個單元格時,我們需要重新繪製僅更改的單元格(不是整個JPanel
)。 Cell可以拋出PropertyChangeEvent
對象,然後我可以調用repaint(x,y,h,w)方法。這是正確的方式嗎?JPanel中的局部重新繪製
-1
A
回答
0
首先,我假設你確實想用面板而不是表格,但我想你可能想看看JTable組件,因爲它可能更適合你的應用程序。
你的問題的答案是,你不應該明確要求重繪一個單元格。代替每個單元應被表示爲一個包含如下面的代碼一個JComponent子類的實例:
public class SnakeGameCell extends JComponent {
private boolean snakePresent;
public boolean isSnakePresent() {
return snakePresent;
}
public void setSnakePresent(boolean present) {
if (snakePresent != present) {
snakePresent = present;
repaint();
}
}
}
換言之,各成分應當負責知道何時它應該被重新繪製和用於使這種情況發生在適當的時候。很難找到適合repaint()被「外部」調用的情況。換句話說,不要讓控制器類負責啓動重繪 - 使需要重繪的東西(組件)決定自己。
+0
10x10 JComponents加載CPU超過60%的網格.. – user3435425
相關問題
- 1. 如何重新繪製BorderLayout中的JPanel
- 2. 重繪JPanel的一部分
- 3. 如何取消重新繪製JPanel?
- 4. 試圖重新繪製一個jpanel
- 5. 堆疊JPanel重新繪製不正確
- 6. 重新繪製JPanel吃掉CPU
- 7. 將JPanel繪製到JPanel中
- 8. 強制JScrollPane和JPanel重繪
- 9. 在JPanel的一部分中繪製而不重繪其餘部分
- 10. 如何使用jpanel繪畫(或重新繪製)
- 11. JPanel上的Java Path2D.Double用'尾部'繪製
- 12. 自動從JPanel中重繪其他JPanel
- 13. JPanel使用invalidate時無法更新,驗證並重新繪製
- 14. JPanel在分配新子類時不會重新繪製
- 15. 重新繪製一個JPanel並更新屏幕
- 16. 從單個「控制」面板重新繪製多個JPanel
- 17. 如何在jPanel上繪製一些不會重新繪製的東西?
- 18. 強制佈局刷新/重繪android?
- 19. 如何訪問外部類的公共方法以重新繪製JPanel?
- 20. 在Swings中重繪JPanel
- 21. JPanel重繪問題
- 22. JPanel重繪問題
- 23. 在JPanel上重繪/刷新JLabels
- 24. 在多個JPanel中繪製
- 25. JPanel定製繪圖
- 26. 重繪兒童的JPanel
- 27. 如何繪製和重繪/更新JPanel的內容(不是背景)組件?
- 28. Java swing:擴展jpanel類在重新繪製時不會變亮。
- 29. Java swing - Jpanel不會自我渲染/重新繪製
- 30. 爲什麼這個JPanel仍然被重新繪製?
你的手機是什麼?這是一個小組嗎?即。整個網格是一個JPanel,還是所有單個單元都有很多JPanel? –
單元格 - 帶有字段所有者的模型中的對象。當所有者更改Cell時拋出PropertyChangeEvent對象,然後im計算我網格上的座標。在我的JPanel im繪畫只有矩形網格(綁定在Field obj(兩層數組上的包裝))。 – user3435425
我不能說出你的意思。你需要發佈一些代碼。 –