- 締切済み
java GUIのContainerOrderFocusTraversalPolicyについて
java GUIのContainerOrderFocusTraversalPolicyについて ContainerOrderFocusTraversalPolicyを使ってtextがいくつかあり初期フォーカスをtext1に当てたい場合 ContainerOrderFocusTraversalPolicyをどうやって使っていけばいいですか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
noname#94983
回答No.1
ContainerOrderFocusTraversalPolicyは、基本的にフォーカスのオーダーを管理するものだからな。単にtext1にフォーカスを当てたいだけなら、そのコンポーネントのrequestFocusを呼べばいいと思うが。 あるいは、どうしてもContainerOrderFocusTraversalPolicyを使う理由があるなら。 おそらくContainerOrderFocusTraversalPolicyを継承して独自のフォーカスポリシーを定義しているはずと思う。そのクラスのgetInitialComponentをオーバーライドして初期フォーカスすべきコンポーネントを返すようにしたらうまくいくと思う。ただし、未確認。
補足
getInitialComponentを追加して動作してみましたが、駄目でした。 どこか悪いところありますか? public class abc2 extends JPanel { JTextField text1,text2; JButton b1,b2,b3; abc2() { //テキスト作成 text1 = new JTextField(10); text2 = new JTextField(10); add(text1); add(text2); text1.setBounds(50,150,130,20); text2.setBounds(250,150,130,20); } class frame extends JFrame { frame() { abc2 test = new abc2(); //フレーム作成 JFrame frame = new JFrame("お試し画面2"); //JFrameの内容表示域を得る。 Container c = frame.getContentPane(); //初期フォーカスセット setFocusTraversalPolicy(new container()); //中間コンテナ配置を決める。 c.add(test); //画面サイズ frame.setSize(1000,500); //画面を中央に配置 frame.setLocationRelativeTo(null); //ウィンドウを可視化 frame.setVisible(true); } } class container extends ContainerOrderFocusTraversalPolicy { public Component getInitialComponent(Container aContainer) { return text2; } } public static void main(String args[]) { abc2 test = new abc2(); test.new frame(); } }