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 很陌生,我不确定实现它的最简单方法是什么,并且真的很想得到一些帮助!:-)

4

3 回答 3

0

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

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

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

于 2012-12-05T09:09:04.540 回答
0

您想要的是:

a)重载给定的方法(如果您可以访问该类并可能添加一个更多参数)

例子 :

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

并通过真正的测试或类似的东西,但这是一种粗鲁的做事方式

b)否则,您可以扩展实现您的方法的类并在扩展类中按照您的意愿重新实现该方法

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

让我知道您决定使用哪种方法。

于 2012-12-05T09:14:58.163 回答
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();

于 2012-12-05T09:16:43.813 回答