Swing/TabbedPaneInputVerifier のバックアップ(No.13)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - Visual を表示
 - ソース を表示
 - Swing/TabbedPaneInputVerifier へ行く。
  
- 1 (2016-12-26 (月) 16:14:09)
 - 2 (2017-02-20 (月) 19:40:38)
 - 3 (2017-02-28 (火) 17:51:53)
 - 4 (2017-04-07 (金) 13:51:51)
 - 5 (2017-11-02 (木) 15:34:40)
 - 6 (2017-11-30 (木) 16:39:47)
 - 7 (2018-02-15 (木) 14:23:42)
 - 8 (2019-08-01 (木) 22:54:12)
 - 9 (2021-04-02 (金) 17:08:21)
 - 10 (2022-08-20 (土) 22:15:25)
 - 11 (2025-01-03 (金) 08:57:02)
 - 12 (2025-01-03 (金) 09:01:23)
 - 13 (2025-01-03 (金) 09:02:38)
 - 14 (2025-01-03 (金) 09:03:21)
 - 15 (2025-01-03 (金) 09:04:02)
 - 16 (2025-06-19 (木) 12:41:37)
 - 17 (2025-06-19 (木) 12:43:47)
 
 
- category: swing folder: TabbedPaneInputVerifier title: JTabbedPaneのタブ移動時にInputVerifierによる検証を実行する tags: [JTabbedPane, InputVerifier, Focus] author: aterai pubdate: 2016-12-26T16:12:59+09:00 description: JTabbedPaneのタブ移動時にタブコンポーネントに設定されたInputVerifierを実行し、その検証で入力が無効な場合はタブの切替をキャンセルします。 image: https://drive.google.com/uc?id=1E4H4aD4uZ-DBc_H6-KLuEEsZoyJqNxdHuQ
 
Summary
JTabbedPaneのタブ移動時にタブコンポーネントに設定されたInputVerifierを実行し、その検証で入力が無効な場合はタブの切替をキャンセルします。
Screenshot

Advertisement
Source Code Examples
tabbedPane.setModel(new DefaultSingleSelectionModel() {
  @Override public void setSelectedIndex(int index) {
    InputVerifier verifier = p.getInputVerifier();
    if (Objects.nonNull(verifier) && !verifier.shouldYieldFocus(p)) {
      UIManager.getLookAndFeel().provideErrorFeedback(p);
      JOptionPane.showMessageDialog(p, "InputVerifier#verify(...): false");
      return;
    }
    super.setSelectedIndex(index);
  }
});
View in GitHub: Java, Kotlin解説
- デフォルト
- タブ切り替え時に
JTextFieldにフォーカスが存在する場合はそのInputVerifierで妥当性の検証が実行されるが、入力が無効の場合でもタブの移動は実行されてしまう - Bug ID: JDK-4403182 InputVerifier failed on JTabbedPane & JMenuBar
 
 - タブ切り替え時に
 override SingleSelectionModel#setSelectedIndex(int): trueDefaultSingleSelectionModel#setSelectedIndex(int)をオーバーライドしたSingleSelectionModelをJTabbedPaneに設定- 現在表示中のタブの
InputVerifier#shouldYieldFocus(...)を実行し、入力が無効の場合はタブ切り替えの実行をキャンセルする - Java Swing JTextField setInputVerifier keep focus on TextField - Stack Overflow
 
参考リンク
- Bug ID: JDK-4403182 InputVerifier failed on JTabbedPane & JMenuBar
 - Java Swing JTextField setInputVerifier keep focus on TextField - Stack Overflow