在我回到高中之前,我正在創建一個服務器/客戶端mmo作爲夏季項目,並且我選擇使用Reddwarf和swing爲我的客戶端。我創建了一個擴展(你猜對了)Canvas的GameCanvas對象,並且覆蓋了paint方法。自定義畫布對象不自動重新繪製
這是我的塗料方法:
/**
* Base for drawing the map, player, etc.
*/
@Override
public void paint(Graphics graphics) {
graphics.dispose();
if(strat == null) {
return;
}
Graphics2D g = (Graphics2D) strat.getDrawGraphics();
g.drawString(String.valueOf(System.currentTimeMillis()), 200, 200);
g.dispose();
strat.show();
}
斯特拉特是兩層BufferStrategy中,並從含有的JFrame(其具有許多許多其他組件)被拉
的的GameCanvas也是JPanel的內除了GameCanvas本身以外沒有其他內容。
我運行我的程序,我可以看到我現在的時間在millis中,並且結尾有一些亂七八糟的數字,整個JFrame和所有包含的組件都是灰色的並且出了問題。
發生了什麼事? O-o我之前用帆布做了很多東西,之前沒有發生過這樣的事情。 :/
不幸的是,這仍然不能解決問題。我在面板上設置了邊框,並且完全按照您所描述的方式進行操作並不能解決問題。它繪製了繪圖的第一個「循環」,然後再也不會重繪。 –
@BitCrash,另外,由於面板需要使用該對象來繪製邊框,所以在方法的開始處處理Graphics對象並沒有任何意義。 – camickr