Java2Dの基本的な概念を理解するのに苦労しています。
具体的な例を挙げます。
独自のバージョンのメソッドを実装することで、swingコンポーネントをカスタマイズできpaintComponent(Graphics g)
ます。メソッドの本体でグラフィックを使用できます。
質問:
このGraphicsオブジェクトとは正確には何ですか、つまり、メソッドを持つオブジェクトとどのように関連しているのpaintComponent
ですか?わかりました。次のようなことができることを理解しています。
g.setColor(Color.GRAY);
g.fillOval(0, 0, getWidth(), getHeight());
灰色の楕円形をペイントします。私が理解できないのは、Graphicsオブジェクトがコンポーネントとキャンバスにどのように関連しているかです。この描画は実際にどのように行われますか?
もう一つの例:
public class MyComponent extends JComponent {
protected void paintComponent(Graphics g) {
System.out.println("Width:"+getWidth()+", Height:"+getHeight());
}
public static void main(String args[]) {
JFrame f = new JFrame("Some frame");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(200, 90);
MyComponent component = new MyComponent ();
f.add(component);
f.setVisible(true);
}
}
このプリント
幅:184、高さ:52
このサイズはどういう意味ですか?サイズ(200,90)のフレームには何も追加していません。
更新:再ペイントを実行するために必要なヒントをオブジェクト
に与えるには、ペイントをオーバーライドする必要があること、およびプラットフォームによって提供されるオブジェクトを作成する必要がないことを理解しています。
その後何が起こるかは私には理解できません。
たとえば、画面を表し、さまざまなメソッドを呼び出し始めるとすぐにオブジェクトが画面にペイントされますか?
それはキューに保存され、それぞれの間に1-1の関連付けがありますか?では、フレームワークは各コンポーネントを使用して、一度に1つずつペイントしますか?
これはどのように作動しますか?これに関するどんな助けも大歓迎ですGraphics g
Graphics
Graphics
g.setXXX
g
component
g
ありがとう