1

JPanel に追加された順序ではなく、JPanel に表示される順序 (左上から右下) に従って JPanel 内のコンポーネントのリストを取得する方法はありますか?

これは、パネルに追加された順序でコンポーネントを取得するようです

Component[] comps = myJPanel.getComponents();
4

2 に答える 2

0

以前に提出された解決策は独創的でしたが、私の要件のほとんどを (全体的に) 満たす方法はかなり単純化されており、ウィンドウ アーキテクチャの左上にゼロ-ゼロ (ルート) ポイントがあることに依存しています。

正確なコーディングは、使用するライブラリによって異なるため、その後のプロセスをヒューリスティックに説明します。

任意の点の原点からの距離(x,y)は です(x^2 + y^2)**(0.5)。これを使用して、各ペアを単一の数値でミラーリングするシャドウ配列を構築できます。これらの距離のそれぞれについて関係昇順ソートを行うだけで、左上から右下への順序のかなり適切な近似値に到達できます。

回避すべき(または少なくとも理解すべき)病的な例がいくつかあります。たとえば、コンパスを画面の左上の頂点に合わせて使用​​すると、原点からまったく同じ距離に無数の点が生成されます。

これに対処するには、xまたはy値を乗数で単純にプリスケールしてから、それを 2 乗して、説明したように 2 乗された他の単位と組み合わせます。これにより、必要に応じて、ウィンドウの左端に近い"y"より高いに比例して大きな値が与えられます。また、必要に応じてその逆も行われます。x

于 2013-04-13T21:59:53.797 に答える