2012-01-10 10 views
0

ここではあまり説明しませんが、画面の左上から画面の左上までフレームのサイズを変更するスクリーンショットを見てください(すべての向きで起こります)。私はちょうどこれがなぜ起こるか、それが回避されるか改善されるか最適化されるかどうかを疑問に思っていた。ありがとう。

enter image description hereJFrameのサイズを変更するときに裂ける - これを避けるか、改善できますか?

+3

なぜコードがないのかわかりにくいですが、私の推測では「再塗装」要求を出す必要があります。どちらか、または長時間実行されているタスクによって、ウィンドウの再描画が終了しない場合があります。 – mre

+0

これは本当のことです。私はそれを理解しています。私はすべての私の色の矩形がコンポーネントのサイズ変更時に再描画されていると思います。私はそれがよりよく見えるようにする方法があるかどうか疑問に思っていただけですか?私のペイントコードを最適化することを見なければならないかもしれません。 – rtheunissen

+4

あなたの四角形をペイントするのに問題があるのはなぜですか? Swingコンポーネントでこれを見たことがないので、カスタムペイントに問題があるはずです。あなたは 'super.paintComponent(...)'を呼び出しますか? – camickr

答えて

0

一つの選択肢はになりませんデフォルトの再描画が可能とながら、ウィンドウがリサイズされた別の表現を持っています。たとえば、ウィンドウのサイズ変更中にウィンドウアウトラインを表示し、操作が完了したら、通常の再ペイントに従って追加のスペースを入力します。

+0

これを達成するための手掛かりはありますか?もしそうでなければ、それを考え出すのに時間を費やすことができました。これが可能なら理想的です。ありがとう – rtheunissen

+0

@ paranoid-android 'repaint'メソッドをオーバーライドして別のことをすることができます。 – fireshadow52

+0

@paranoid-androidはストローを噛まない(別名:ランダムハックを適用する)代わりに何が起きているのかを明確に理解しようとする。おそらく何かがあなたのカスタムコードに間違っています。デバッグやプロファイラが役立ちます – kleopatra

2

opacityプロパティを尊重してください。 setOpaque(true)では、 "コンポーネントは、四角形の範囲内に含まれるすべてのビットをペイントすることに同意します。"そうしないと、あなたの質問に表示されているものと同様のレンダリング成果物が残ることがあります。対照的に、このexampleは、すべてのピクセルが描画されるわけではないことを示すためにsetOpaque(false)を使用します。

関連する問題