Swing/OptionPaneDefaultFocus のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- 14 (2025-01-03 (金) 08:57:02)
- 15 (2025-01-03 (金) 09:01:23)
- 16 (2025-01-03 (金) 09:02:38)
- 17 (2025-01-03 (金) 09:03:21)
- 18 (2025-01-03 (金) 09:04:02)
- 19 (2025-06-19 (木) 12:41:37)
- 20 (2025-06-19 (木) 12:43:47)
TITLE:JOptionPaneのデフォルトフォーカス
Posted by aterai at 2009-11-23
JOptionPaneのデフォルトフォーカス
`JOptionPane
`にデフォルトでフォーカスをもつコンポーネントを追加します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
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) {}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、`JOptionPane.showConfirmDialog
で表示する
JTextField
`にデフォルトのフォーカスがあたるように設定しています。
- 左上
- デフォルト
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();
` - Windowを開いたときのフォーカスを指定など
- `
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();
`
- `
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();
` - Swing - Input focus
- `