2012-12-05 16 views
0

我使用Slick庫作爲我的小遊戲的框架。 Graphics2d對象默認不支持換行符。然而,我發現這一點的解決辦法:編輯已有的方法

private void drawString(Graphics g, String text, int x, int y) { 
    for (String line : text.split("\n")) 
     g.drawString(line, x, y += g.getFontMetrics().getHeight()); 
} 

,因爲我很新到Java,我不知道什麼是最簡單的方式來實現,這將是,並且更喜歡一些幫助! :-)

+1

什麼是上述方法的問題?你能更清楚地得到什麼幫助嗎? –

+0

那麼,我可以在哪裏放這個代碼? 如果我commandclick drawString方法,它帶我到類,但它說方法本身是編譯和只讀 –

回答

0

你想在你的情況是什麼:

一)超載給定的方法(如果你有訪問類,也許增加一個參數)

例如:

private void drawString(Graphics g, String text, int x, int y,boolean test)

,並通過一個真實的測試或類似的東西,但是這是做事粗方式

B)否則,你可能只是延長實現你的方法的類,並重新實現方法,你在擴展類希望

C)或作爲第三種選擇這可能是最可行的在此情況是@ user1594895國只需編輯原始的方法,但是在這種情況下,你必須確保你不會讓任何使用原來的方法,否則考慮做一)b)

讓我知道你決定使用什麼樣的方法。

0

我的建議是:下載你正在使用的絲綢庫的來源,你可以下載https://bitbucket.org/kevglass/slick

您指定的編輯方法。構建它並將其包含在您的項目中。 使用像NetBeans或Eclipse這樣的IDE很簡單。

您應該提交相關補丁的錯誤,以便將其集成到常規庫中。

0

,你應該申請時,你只能從一個類調用這個方法,一個簡單的方法(這是在自己的職位已經提到): 只需插入代碼段以上的類,然後調用它像任何其他方法那麼這是一種輔助方法。 (只問如果你不明白我的意思)


另一個簡單的方法做的是 - 如果該類不是最後的 - 只是擴展類和覆蓋的方法:

public class MyGraphics extends Graphics { 
     @Override 
     public void drawString(String text, int x, int y) { 
     for (String line : text.split("\n")) 
      super.drawString(line, x, y += getFontMetrics().getHeight()); 
     } 
} 

然後你只需用你自己的類的工作 - 這是完全一樣的其他類,期待您drawString方法是不同的,你會實例化這樣的:Graphics g = new MyGrpahics();