Swing/AnchorSelection のバックアップの現在との差分(No.12)
TITLE:JTableのセルにあるフォーカスを解除
JTableのセルにあるフォーカスを解除
編集者:Terai Atsuhiro~
作成日:2005-04-04
更新日:2015-03-17 (火) 18:44:01
- category: swing folder: AnchorSelection title: JTableのセルにあるフォーカスを解除 noindex: true pubdate: 2005-04-04T03:22:43+09:00 description: 以下のコメントにあるように、Java 6以降でソートやclearSelectionすれば、選択状態やフォーカスは解除されるようになりました。
概要
以下のコメントにあるように、Java 6
以降でソートやclearSelection
すれば、選択状態やフォーカスは解除されるようになりました。このサンプルは意味が無くなったので削除し、代わりにJTableHeader
をクリックした場合の例をJTableHeaderをクリックしてそのColumnのセルを全選択に作成しました。
概要
JTableのセルにあるフォーカスをヘッダのクリックで解除します。コメント
-
JDK 1.5.0_06
などにして試してみたところ、特別なことをしなくてもヘッダをクリックしてソートするとセルのフォーカスは外れるようです。 -- aterai- もう修正されているようなので、この記事は削除するか、別の内容に変更するかもしれません。Bug ID: JDK-6195469 REGRESSION: Multiple interval selection is lost in JTable if mouse is dragged -- aterai
- 移動したときに、日本語入力するには、どうしたらいいんですかね? -- zero
- 多分エクセルみたいな入力のことですよね。アルファベットならマウスで入力状態にしなくてもフォーカスがあるセルに直接入力できますが、
IME
がon
の日本語入力モードの場合はうまくいかないようです。いまのところこれを簡単に行う方法は見つけられていません。 -- aterai
#screenshot
サンプルコード
//table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); table.getTableHeader().addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { JTable table = ((JTableHeader)e.getSource()).getTable(); if(table.isEditing()) { table.getCellEditor().stopCellEditing(); } //table.getSelectionModel().clearSelection(); //table.getSelectionModel().setAnchorSelectionIndex(-1); //table.getSelectionModel().setLeadSelectionIndex(-1); table.getColumnModel().getSelectionModel().setAnchorSelectionIndex(-1); table.getColumnModel().getSelectionModel().setLeadSelectionIndex(-1); } });
- &jnlp;
- &jar;
- &zip;
解説
ヘッダがマウスでクリックされた時に、列または行のSelectionModelを取得し、AnchorSelectionIndex(1.5.0系ではLeadSelectionIndexの設定も必要?)に範囲外の値を設定します。 以下の方法でも、選択をクリアできます。//1.5.0系ではsetAnchorSelectionIndex()が必要? table.changeSelection(table.getSelectedRow(), table.getSelectedColumn(), false, false);
コメント
- JDKを新しい1.5.0_06などにして試してみたところ、特別なことをしなくてもヘッダをクリックするとセルのフォーカスは外れるようです。 -- terai
- 移動したときに、日本語入力するには、どうしたらいいんですかね? -- zero?
- 多分エクセルみたいな入力のことですよね。アルファベットならマウスで入力状態にしなくてもフォーカスがあるセルに直接入力できますが、IMEがonの日本語入力モードの場合はうまくいかないようです。いまのところこれを簡単に行う方法を僕は知らないです。 -- terai