0

私の講師は、グラフィック用にこのAPI を定義しました。

これは非常に単純ですが、単純なグラフィックス操作を表示する方法を理解するために 1 時間か 2 時間費やしました。

したがって、TopLevel を拡張するクラス T があり、それがメイン フレームです。Pad を拡張する Pad P もあり、ここにその paintComponent メソッドの本体があります。

@Override
protected void paintComponent(Graphics2D g) {
    super.paintComponent(g);
    g.drawString("Hello", 0, 0);
    g.fill(new Rectangle(5, 5));
    repaint(); //(Probably don't need)
}

次に、 を呼び出しますT.add(P)(また、 と も実行T.addButton(..)T.display(true)ます。アプリケーションを実行すると、作成したボタンを含む空のキャンバスが表示されます。

どんな助けでも大歓迎です。

4

2 に答える 2

2

テキストの描画は、思ったほど簡単ではありません。

y 位置は、フォントのベース ライン (ほとんどのテキストが配置されるポイント) を表します。ベース ラインの下に配置される文字 (「g」や「p」などの文字) が拡張される適切なラインもあります。

フォントにもアセントがあります。これは、ベースラインより上の通常のキャラクターの「高さ」です(明らかに、下降を除く)

ここに画像の説明を入力

テキストの測定からの画像

テキストを適切に描画するには、常に上昇を y 位置に追加する必要があります...

FontMetrics fm = g.getFontMetrics();
g.drawString("Hello", 0, fm.getAscent());

呼び出しを失うこともできrepaintます。これにより、再描画マネージャーが (最終的に)paintコンポーネントのメソッドを何度も何度も呼び出します...

Swing では、Graphics通常、色がコンポーネントの前景色になるように設定されます。念のため、色を変更してみてください。

g.setColor(Color.RED);何かをペイントしようとする前のようなものを使用してみてください。

于 2012-12-02T04:42:31.603 に答える
0

T.setVisible(真); // 構築後

于 2012-12-02T05:18:55.503 に答える