2009-03-14 10 views
0

repaint()を呼び出すと、たとえばrepaintComponent(Graphics)が呼び出され、パラメータGraphicsなしのクラスです。repaint()やJPanelのGraphicsにアクセスする暗黙的なGraphicsパラメータを使用してJavaメソッドを呼び出す

私は使用しているより多くのパラメータを必要とする機能を持っていたいと思いますが、私はまだそれを描画することができるので、私はそのような呼び出しを行うことができなければなりません(repaint()とにかくrepaintComponent()を明示的に呼び出すことによって再描画されると仮定して、関数を呼び出すために、repaintComponent(Graphics)を呼び出す)、またはGraphicsへのアクセスを取得します。

私はオブジェクトにデータを入れて描画することを考えていましたが、それがうまくいくかどうかわかりませんし、かなり複雑になると思います。

+0

おそらくそれは私のものですが、あなたの質問は混乱しているように見えます。私はあなたがしたいことを本当に理解していません。 –

+0

@Prinny:私の答えは何の助けでしたか? –

答えて

1

O/Sペイントイベントの処理中にのみ、GUIにコンポーネントペインティングを実行することはできません。これは、イベントディスパッチスレッドでJavaペイントイベントをトリガします。 Repaintはpaint()やその派生物のいずれも呼び出さず、コンポーネントの領域の再描画を要求し、paintイベントをトリガーします。

プロパティ(例:Swing)の設定やサブクラス化、サブクラス化されたコンポーネントへのセッターの追加など、コンポーネントにペイントする必要がある情報を何らかの形で設定する必要があります。あなたのデータをオブジェクトに入れたら、そのオブジェクトをあなたのコンポーネントにセットするのは簡単ではありません。

ペイント(グラフィックス)メソッドで別のオブジェクトを作成し、そのオブジェクトをコンポーネントに関連付け、オブジェクトペイントからペイントメソッドを呼び出すこともできます。絵画は多数のオブジェクトに関心があります。

+0

+1 Software Monkey FYIでは、repaint()を呼び出してもpaintComponent(...)は直接呼び出されません。あなたは本質的にスイング(awt)に次の可能な時にコンポーネントを再描画するように求めています。イベントスレッドは、その時刻が最終的にpaintComponent(...)であるときに決定され、適切なグラフィックスオブジェクトが最上位ネイティブコードによって提供されます。 具体的にそれらを宣言したり、周囲のオブジェクト/静的オブジェクト/シングルトンを使用している関数にパラメタを渡す考えは、Javaでは不可能です。 – basszero

関連する問題