Java Swing サンプル集

Top Page
* JTable セル単位でのToolTip
-
・説明
-

JTableにToolTipを設定すると、通常はセル単位ではなくJTable内どの位置にマウスポインタが存在しても同じ内容が表示されます。

これをセル単位で表示を変えるためには、
  • JTableのメソッドgetToolTipText()をオーバーライドする。
  • 同メソッドのMouseEventパラメータから、マウス上のセルの行、桁を取得する。
  • 行、桁からセルに設定されている文字列を取得し、返す。
という処理を行います。
app
サンプルソース : src_jtable_tool_tip.zip
サンプルアプリ : sample_jtable_tool_tip.jar
・コード例
-

    jTable = new JTable(dm){
        // getToolTipText()をオーバーライド
        public String getToolTipText(MouseEvent e){
            // イベントからマウス位置を取得し、テーブル内のセルを割り出す
            return (String)getModel().getValueAt(
                    rowAtPoint(e.getPoint()), 
                    columnAtPoint(e.getPoint()));
        }
    };
なおEclipseのVisualEditor(注)を使用している場合、上記コードでは

Cannot process anonymous declarations.

というエラーがUIエディタに発生し、テーブル内容が表示不能となります。
これを回避するためには、JTableを継承した独自のテーブルクラスを定義し、その中でgetToolTipText()をオーバーライドするようにすればエラーは発生しなくなるようです。
注)1.2、1.4で確認。他のバージョンでは未確認。
app


inserted by FC2 system