编辑已有的方法

时间:2012-12-05 08:50:37

标签: java slick2d

我正在使用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很陌生,我不确定实现这个的最简单方法是什么,并且真的很喜欢一些帮助! : - )

3 个答案:

答案 0 :(得分:0)

我的建议是:下载您正在使用的Silk库的来源,您可以下载https://bitbucket.org/kevglass/slick

您指定的编辑方法。构建它并将其包含在您的项目中。 使用像NetBeans或Eclipse这样的IDE很简单。

您应该提交相关补丁的错误,以便将其集成到通用库中。

答案 1 :(得分:0)

你想要的是:

a)重载给定方法(如果您有权访问该类并可能再添加一个参数)

示例:

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

并传递一个真正的测试或类似的东西,但这是一种粗暴的做事方式

b)否则你可以扩展实现你的方法的类,并在扩展类中重新实现你想要的方法

c)或作为第三种替代方案,在这种情况下可能是最可行的只是编辑@ user1594895状态的原始方法,但在这种情况下你必须确保你不会使用原始方法,否则考虑做 a) b)

让我知道你决定采用什么样的方法。

答案 2 :(得分:0)

一种简单的方法(已在您自己的帖子中提到),当您只从一个类调用此方法时应该应用它: 只需在您的类中插入上面的代码片段,然后像任何其他方法一样调用它。那就是一种辅助方法。 (请问如果你没理解我的意思)


另一个简单的方法是 - 如果类不是final - 只是扩展类并覆盖方法:

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();