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)指定されたメソッドをオーバーロードするには(クラスにアクセスでき、おそらくもう1つのパラメーターを追加する場合)

例 :

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

テストでtrueを渡すか、そのようなものですが、これは大雑把なやり方です

b)それ以外の場合は、メソッドを実装するクラスを拡張し、拡張されたクラスで必要に応じてメソッドを再実装できます

c)または、この場合に最も実行可能な3番目の代替手段として、@ user1594895が述べているように元のメソッドを編集するだけですが、この場合、元のメソッドを使用しないことを確認する必要があります。a)またはb)

どのようなアプローチを採用することにしたか教えてください。

于 2012-12-05T09:14:58.163 に答える
0

このメソッドを 1 つのクラスからのみ呼び出す場合に適用する必要がある簡単な方法 (自分の投稿で既に説明されています): 上記のコード スニペットをクラスに挿入するだけで、他のメソッドと同じように呼び出すことができます。次にヘルパーメソッド。(私の言いたいことが分からなかったら聞いてください)


もう 1 つの簡単な方法は、クラスが 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();

于 2012-12-05T09:16:43.813 に答える