2012-07-29 9 views
8

JPanel.repaint()メソッドとJFrame.repaint()メソッドの違いを誰にも教えてください。どちらもJPanelでpaintComponent()メソッドを呼び出すと思います。 repaint()メソッドが呼び出されたJFrame.repaint()とJPanel.repaint()の差異

明確にしてください、ありがとう

答えて

18

は、どのコンポーネントにrepaint()を呼び出すと、再描画に要求が追加されますそのコンポーネントをペイントすることができます。条件が正しい場合、マネージャはコンポーネントのpaint(...)メソッドを呼び出すよう手配します。 Componentのペイントメソッドは、paintComponent(...)paintBorder(...)paintChildren(...)を呼び出すため、これはコンポーネントペイント、境界線、カスケードペイントをすべての子、子、子どもの子供などに再帰的に描画します.JFrameでこれを呼び出すと、このカスケードが発生しますトップレベルのウィンドウ全体で発生するのに対し、サブコンポーネントでそれを呼び出すと、そのコンポーネントとその子のみが再描画されます。

repaint()を呼び出しても、特にスタックされたリクエストがある場合は、再ペイントマネージャがコンポーネントをペイントすることは保証されません。詳細については、Painting in AWT and Swingをご覧ください。簡単に言うと

9

1.は、イベントハンドラスレッドは、すべてのコンポーネントを通知し、その後、すべてのコンポーネントは、そのpaintComponent()メソッドを呼び出します。

2.repaint()へのJPanel内のすべてのコンポーネントを持つことになりますJPanel.repaint()を呼び出し、そしてrepaint()にJFrameの内すべてのコンポーネントを持つことになりますJFrame.repaint()を呼び出します。

3. JPanel.repaint(の必要がなく、あまりにものJPanelを再描画するために呼び出すJFrame.repaint())....

2

  • JPanel.repaint()は、それ自体とその子を再描画します。
  • JFrame.repaint()は、それ自体とその子を再描画します。しかし、JFrameがベースであるため、これは内部のすべてのコンポーネントを再描画します。

詳細については、「@Hovercraft Full Of Eels」の回答を確認してください。

関連する問題