Swing/ClearSelection のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ClearSelection へ行く。
- 1 (2011-04-18 (月) 14:47:37)
- 2 (2011-04-19 (火) 13:59:30)
- 3 (2012-12-22 (土) 15:58:00)
- 4 (2014-11-12 (水) 02:09:03)
- 5 (2015-01-22 (木) 21:18:17)
- 6 (2015-02-18 (水) 15:04:15)
- 7 (2016-12-03 (土) 18:28:31)
- 8 (2017-04-04 (火) 14:17:08)
- 9 (2017-12-01 (金) 13:21:53)
- 10 (2019-08-08 (木) 18:57:58)
- 11 (2021-04-09 (金) 19:43:33)
- 12 (2021-11-24 (水) 06:33:00)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JListの選択を解除 #navi(../) RIGHT:Posted by [[aterai]] at 2011-04-18 *JListの選択を解除 [#y7eeee60] JListのセル選択状態を解除します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TavH8_fQKAI/AAAAAAAAA5s/MyUXQnSHPUA/s800/ClearSelection.png) **サンプルコード [#w9ea8a72] #code{{ class ClearSelectionListener extends MouseAdapter { private static void clearSelectionAndFocus(JList list) { list.clearSelection(); list.getSelectionModel().setAnchorSelectionIndex(-1); list.getSelectionModel().setLeadSelectionIndex(-1); } private static boolean contains(JList list, Point pt) { for(int i=0;i<list.getModel().getSize();i++) { Rectangle r = list.getCellBounds(i, i); if(r.contains(pt)) return true; } return false; } private boolean startOuter = false; @Override public void mousePressed(MouseEvent e) { JList list = (JList)e.getSource(); startOuter = !contains(list, e.getPoint()); if(startOuter) { clearSelectionAndFocus(list); } } @Override public void mouseReleased(MouseEvent e) { startOuter = false; } @Override public void mouseDragged(MouseEvent e) { JList list = (JList)e.getSource(); if(contains(list, e.getPoint())) { startOuter = false; }else if(startOuter) { clearSelectionAndFocus(list); } } } }} **解説 [#f030e228] 上記のサンプルでは、JListのセル以外の領域をクリックすると、選択とフォーカスを解除するようにマウスリスナーなどを設定しています。 - 選択解除 -- JList#clearSelection(); -- ListSelectionModel#clearSelection() のラッパー - フォーカス解除 -- list.getSelectionModel().setAnchorSelectionIndex(-1); -- list.getSelectionModel().setLeadSelectionIndex(-1); -- アンカー、リードの順番で解除する必要がある //**参考リンク **コメント [#c5b93fc8] #comment