Swing/OptionPaneDefaultFocus のバックアップ差分(No.6)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/OptionPaneDefaultFocus へ行く。
- 1 (2009-11-23 (月) 19:41:03)
- 2 (2011-06-02 (木) 02:46:26)
- 3 (2012-02-10 (金) 16:58:01)
- 4 (2013-01-04 (金) 15:58:09)
- 5 (2013-08-30 (金) 01:35:26)
- 6 (2013-12-24 (火) 20:21:54)
- 7 (2014-11-25 (火) 03:03:31)
- 8 (2015-02-10 (火) 15:29:03)
- 9 (2015-06-17 (水) 16:40:18)
- 10 (2017-03-16 (木) 21:41:31)
- 11 (2018-01-19 (金) 13:58:35)
- 12 (2020-01-15 (水) 18:35:09)
- 13 (2021-07-14 (水) 23:43:21)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JOptionPaneのデフォルトフォーカス #navi(../) #tags(JOptionPane, Focus, JComponent, WindowListener, HierarchyListener, AncestorListener) RIGHT:Posted by &author(aterai); at 2009-11-23 *JOptionPaneのデフォルトフォーカス [#p8003f6b] ``JOptionPane``にデフォルトでフォーカスをもつコンポーネントを追加します。 * JOptionPaneのデフォルトフォーカス [#p8003f6b] `JOptionPane`にデフォルトでフォーカスをもつコンポーネントを追加します。 -&jnlp; -&jar; -&zip; - &jnlp; - &jar; - &zip; //#screenshot #ref(http://lh5.ggpht.com/_9Z4BYR88imo/TQTQoUaDrDI/AAAAAAAAAf4/nUnrCrmb5io/s800/OptionPaneDefaultFocus.png) #ref(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTQoUaDrDI/AAAAAAAAAf4/nUnrCrmb5io/s800/OptionPaneDefaultFocus.png) **サンプルコード [#nd2fa665] ** サンプルコード [#nd2fa665] #code(link){{ textField4.addAncestorListener(new AncestorListener() { @Override public void ancestorAdded(AncestorEvent e) { e.getComponent().requestFocusInWindow(); //or textField4.requestFocusInWindow(); } @Override public void ancestorMoved(AncestorEvent e) {} @Override public void ancestorRemoved(AncestorEvent e) {} }); }} **解説 [#k9a64d2f] 上記のサンプルでは、``JOptionPane.showConfirmDialog``で表示する``JTextField``にデフォルトのフォーカスがあたるように設定しています。 ** 解説 [#k9a64d2f] 上記のサンプルでは、`JOptionPane.showConfirmDialog`で表示する`JTextField`にデフォルトのフォーカスがあたるように設定しています。 -左上 - 左上 -- デフォルト #code{{ int result = JOptionPane.showConfirmDialog(frame, textField, "Input Text", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result==JOptionPane.OK_OPTION) textArea.setText(textField.getText()); }} -右上 -- ``JOptionPane#createDialog(...)``で``JDialog``を取得し、``WindowListener#windowOpened``で、``textField.requestFocusInWindow();`` - 右上 -- `JOptionPane#createDialog(...)`で`JDialog`を取得し、`WindowListener#windowOpened`で、`textField.requestFocusInWindow();` -- [[Windowを開いたときのフォーカスを指定>Swing/DefaultFocus]]など #code{{ JOptionPane pane = new JOptionPane(textField, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, null, null); JDialog dialog = pane.createDialog(frame, "Input Text"); dialog.addWindowListener(new WindowAdapter() { @Override public void windowOpened(WindowEvent e) { textField.requestFocusInWindow(); } }); dialog.setVisible(true); Object selectedValue = pane.getValue(); int result = JOptionPane.CLOSED_OPTION; if(selectedValue != null && selectedValue instanceof Integer) { result = ((Integer)selectedValue).intValue(); } result==JOptionPane.OK_OPTION) textArea.setText(textField.getText()); }} -左下 -- ``textField``に``HierarchyListener``を追加し、``hierarchyChanged``が呼ばれたときに、``textField.requestFocusInWindow();`` - 左下 -- `textField`に`HierarchyListener`を追加し、`hierarchyChanged`が呼ばれたときに、`textField.requestFocusInWindow();` #code{{ textField3.addHierarchyListener(new HierarchyListener() { @Override public void hierarchyChanged(HierarchyEvent e) { if((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED)!=0 && textField3.isShowing()) { EventQueue.invokeLater(new Runnable(){ @Override public void run() { textField3.requestFocusInWindow(); } }); } } }); int result = JOptionPane.showConfirmDialog(frame, textField3, "Input Text", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result==JOptionPane.OK_OPTION) textArea.setText(textField3.getText()); }} -右下 -- ``textField``に``addAncestorListener``を追加し、``ancestorAdded``が呼ばれたときに、``textField.requestFocusInWindow();`` -- [http://forums.sun.com/thread.jspa?threadID=777887 Swing - Input focus] - 右下 -- `textField`に`addAncestorListener`を追加し、`ancestorAdded`が呼ばれたときに、`textField.requestFocusInWindow();` -- [https://forums.oracle.com/thread/1354218 Swing - Input focus] **参考リンク [#u3c4a8af] ** 参考リンク [#u3c4a8af] - [[Windowを開いたときのフォーカスを指定>Swing/DefaultFocus]] - [http://forums.sun.com/thread.jspa?threadID=777887 Swing - Input focus] - [https://forums.oracle.com/thread/1354218 Swing - Input focus] **コメント [#nef3f20f] ** コメント [#nef3f20f] #comment