私はカスタムスイングコンポーネントを構築しています。カスタムスイングコンポーネント:repaint()の問題
再ペイントに問題があります。私のコンポーネントは、jtree
jtable
があり、その後、完全にカスタムペイントされている部分は、(うまく行けばあることを終わるかなりMSプロジェクト風ganttview)
特定の問題があることJTreeには、テーブルとガントを展開するとき新たに展開されたtreenodeの下にある新しいサブプロジェクトを反映するためにビューを更新する必要があります。彼らはこれを行うが、サイズは更新されないので、テーブルには追加の行が表示されず、私のganntディスプレイはフルハイトを使い切っていない。
奇妙なことは、jframe
のウィンドウハンドルに触れると(これも1ピクセルのサイズ変更さえ) - これは完全な更新を強制して、コンポーネントが正しく表示されているように見えます。右はディスプレイを埋める。
私がサイズ変更をしないと、ツリーのノードが拡大/縮小されたときに再描画が呼び出されます。これはganttviewの更新が表示されているためですが、スクリーン。
下のスクリーンショットは、resize()の後に正しい表示を示し、下半分は、サイズ変更を行わずにノードを展開すると表示されます。
私は、コンポーネントがサイズ変更時に正しいことを行うので、コンポーネント自体を正しくrepaint()する方法を知っていると主張していますが、これにより完全なリフレッシュを強制する特別なイベントが発生する必要があります。 update
()、invalidate
()、repaint
()のさまざまな組み合わせを試しましたが、親フォームのサイズを変更したときに発生する完全なrepaint
()をエミュレートすることはできません。
おかげで、エース
多くありがとう、これはトリックをしました – phatmanace