Windowsでウィンドウを列挙するのは簡単だ。
だけどSwingで手軽にウィンドウを列挙する方法がどうも見当たらない。
仕方ないのでJComponentに限定するウィンドウ列挙関数を自作してみた。
SwingのJComponentがAWTのContainerを基底クラスにしていることを利用している。
Vector<JComponent> collcetApplicationJComponents() { Vector<JComponent> list = new Vector<JComponent>(); for(Frame f : Frame.getFrames()) { if(f instanceof JFrame) { collectComponets(((JFrame)f).getRootPane(), list); } } return list; } void collectComponets(JComponent root, Vector<JComponent> list) { for(Component c : root.getComponents()) { if(c instanceof JComponent) { list.add((JComponent)c); collectComponets((JComponent)c, list); } } }