1

そこで、クラス用の小さなプログラムを書きました。ブラウザではなく、装飾されていない JFrame 内の JApplet として設計しました。それ以外は、ある種の単純な描画プログラムです。2 点をクリックして選択した図形を描画すると、再描画が呼び出されます。私が抱えている問題は、プログラムがセカンダリ モニターに移動されている間に描画すると、JApplet 全体が消えて、描画された図形だけが表示されることです。2番目のポイントが選択された後にのみ消えるので、repaint()でこれを行うと思います。

私のセカンダリ モニターは、まったく同じブランドと解像度、さらにはカラー プロファイルを使用しています。

その他の技術的な詳細については、Java 1.7 (頭の中でどの更新プログラムを思い出せません)、Windows 8 Enterprise 64x を使用しており、Eclipse の [実行] ボタンを使用してテストしています。

助けてくれてありがとう!

4

1 に答える 1

2

私は確かに getGraphics(); を呼び出しています。JApplet の init() メソッドで..

それが問題だ。このGraphicsオブジェクトは一時的なものであり、次回 JVM が再描画の必要があると判断したときに再描画されます。それは以下によって引き起こされる可能性があります:

  • ウィンドウのサイズまたは位置の変更。
  • 別のプログラムでカバーしてから、カバーしているアプリを削除します。
  • 新しいコンポーネントの追加または表示される値の変更。

達成しようとしていることを実行する方法の詳細については、カスタム ペイントの実行を参照してください。OTOH Swing にはJLabelを表示できる がありBufferedImageます。お好みの使い方ができBufferedImageます。更新されたらrepaint()、ラベルを呼び出して効果を確認します。

于 2013-04-29T15:02:28.630 に答える