複数のコンテナーにネストされた、多くのスイング コンポーネントを含むアプリケーションがあります。コンポーネントのコンテキストに基づいて情報を表示する右クリック ポップアップ メニューを実装しています。
例を挙げると、JTextField を右クリックすると、テキストフィールドが JScrollPane 内にある場合はポップアップに「foo」を表示し、そうでない場合は「bar」を表示します。ただし、JTextField 自体は、他の複数の JPanel にネストされている場合があります。
私はこのようなことができます:
public static boolean isInScrollPane(JComponent comp) {
Container c = comp.getParent();
while (c != null) {
if (c instanceof JScrollPane) {
return true;
} else {
c = c.getParent();
}
}
return false;
}
しかし、はるかに優れたソリューションが既に利用可能であり、私はそれを見つけられなかったに違いありません。
誰かヒントを教えてください。