Swing/CellHighlight のバックアップの現在との差分(No.1)
2021-11-18 (木) 11:29:54
概要
JTable
のセル上にマウスカーソルが存在する場合、その背景色を変更します。
Screenshot
Advertisement
サンプルコード
解説
上記のサンプルでは、JTable
にMouseListener
、MouseMotionListener
を追加してマウスカーソルが乗っているセルを取得し、セルレンダラーでこれを参照してその背景色を変更しています。
-
JTable#prepareRenderer(...)
メソッドをオーバーライドする方法もある#spanend #spanadd class HighlightableTable extends JTable { #spanend private final HighlightListener highlighter; #spanadd #spanend public HighlightableTable(TableModel model) { super(model); highlighter = new HighlightListener(this); addMouseListener(highlighter); addMouseMotionListener(highlighter); } #spanadd #spanend @Override public Component prepareRenderer( TableCellRenderer r, int row, int column) { Component c = super.prepareRenderer(r, row, column); if (highlighter.isHighlightableCell(row, column)) { c.setBackground(Color.RED); } else if (isRowSelected(row)) { c.setBackground(getSelectionBackground()); } else { c.setBackground(Color.WHITE); } return c; } #spanadd } #spanend #spanadd