8

JPanel.repaint()メソッドとメソッドの違いを誰か説明してください。どちらもJPanelでメソッドをJFrame.repaint()呼び出していると思います。paintComponent()

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

4

3 に答える 3

18

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

repaint()呼び出しは、再描画マネージャーがコンポーネントを描画することを保証しないことに注意してください。特に、スタックされた要求がある場合は注意してください。詳細については、AWT と Swing でのペイント を参照してください。

于 2012-07-29T11:06:25.007 に答える
9

1.repaint()メソッドが呼び出されると、イベントハンドラー スレッドがすべてのコンポーネントに通知し、すべてのコンポーネントが paintComponent() メソッドを呼び出します。

2.呼び出しJPanel.repaint()は JPanel 内の repaint()すべてのコンポーネントが含まれ、呼び出しJFrame.repaint()は JFrame 内のすべてのコンポーネントが含まれます repaint()

3. JFrame.repaint() を呼び出して、JPanel.repaint() を必要とせずに JPanel も再描画します。

于 2012-07-29T11:02:08.557 に答える