Swing/DisabledItem のバックアップ差分(No.8)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/DisabledItem へ行く。
- 1 (2005-10-26 (水) 17:59:58)
- 2 (2006-02-27 (月) 15:47:28)
- 3 (2006-04-12 (水) 19:40:51)
- 4 (2007-04-13 (金) 22:22:00)
- 5 (2008-05-24 (土) 02:26:40)
- 6 (2008-06-11 (水) 16:59:17)
- 7 (2012-08-10 (金) 00:04:40)
- 8 (2013-03-30 (土) 20:55:56)
- 9 (2013-07-27 (土) 00:56:48)
- 10 (2015-01-09 (金) 14:11:43)
- 11 (2015-03-13 (金) 13:08:09)
- 12 (2016-09-24 (土) 04:23:17)
- 13 (2017-02-15 (水) 13:46:09)
- 14 (2017-04-28 (金) 16:49:00)
- 15 (2018-04-24 (火) 14:54:36)
- 16 (2018-10-17 (水) 18:44:34)
- 17 (2019-05-11 (土) 15:58:53)
- 18 (2021-02-07 (日) 14:53:29)
- 19 (2023-03-09 (木) 18:58:30)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JListの任意のItemを選択不可にする #navi(../) #tags() RIGHT:Posted by &author(aterai); at 2005-05-30 *JListの任意のItemを選択不可にする [#n20fb52b] JListの任意のItemを選択不可にするようなレンダラーを設定します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(http://lh4.ggpht.com/_9Z4BYR88imo/TQTLAYVmo3I/AAAAAAAAAW4/3MUtTm4ixyo/s800/DisabledItem.png) **サンプルコード [#we6e9a24] #code(link){{ final JList = new JList(); final ListCellRenderer r = list.getCellRenderer(); final Vector disableIndexSet = new Vector(); initDisableIndex(disableIndexSet); list.setCellRenderer(new ListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component c; if(disableIndexSet.contains(Integer.valueOf(index))) { c = r.getListCellRendererComponent(list,value,index,false,false); c.setEnabled(false); }else{ c = r.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus); } return c; } }); ActionMap am = list.getActionMap(); am.put("selectNextRow", new AbstractAction() { public void actionPerformed(ActionEvent ae) { @Override public void actionPerformed(ActionEvent ae) { int index = list.getSelectedIndex()+1; for(int i=index;i<list.getModel().getSize();i++) { if(!disableIndexSet.contains(Integer.valueOf(i))) { list.setSelectedIndex(i); break; } } } }); }} **解説 [#w70ba780] 上記のサンプルでは、カンマ区切りで入力したインデックスのアイテムを選択不可にすることができます。 選択可か不可かはセルレンダラー中で判断しています。このセルレンダラーでは、インデックスが選択不可の場合、オリジナルのセルレンダラーから選択無し、フォーカス無しのコンポーネントを取得し、さらにsetEnabled(false)として返しています。 また、上下キーでアイテムの選択を移動する場合、選択不可にしたアイテムを飛ばすように、selectNextRowなどのアクションを変更しています。 **参考リンク [#k46e3fd2] -[[JComboBoxのアイテムを選択不可にする>Swing/DisableItemComboBox]] **コメント [#b2e67b98] #comment