LED をシミュレートするために、フォームに多数 (500 以上) の小さな円を表示する必要があります。ただし、これらの円は非常に小さく、直径が 8 ~ 9 ピクセル程度である必要があります。
これまでのテストでは、Shape (Ellipse2D.Double) を使用する Led クラスを作成し、JFrame の paint メソッドから JFrame に直接表示するコードをまとめました。
これにより、2つの観察/問題が発生しました。
1) まず、別の方法がない限り、Java は小さな円を描くのに問題があるようです。それらはデフォルトのペン幅 (または 1 ピクセル) で右下隅に「壊れて」表示され、変形した円を残してこの部分が切り取られます。(たくさんの)小さな円を描いて、正しく見えるようにする方法があれば教えてください。
2) サブクラス化された JFrame は、ペイント メソッドをオーバーライドしてこれらの「LED」を描画しますが、JFrame が確実に描画されるように super.paint も呼び出します。ただし、最初に表示されたとき、またはフォームが画面の外に出て後ろに移動したとき、またはアプリケーションが前に置かれて再び離れたときに、LED を描画することはめったにありません。フォームを最小化/最大化するときに呼び出されます。フォームがペイントを必要とするたびにペイントを呼び出すべきではありませんか?