001 package net.sourceforge.bee; 002 003 import java.util.*; 004 import javax.swing.*; 005 import javax.swing.table.*; 006 import javax.swing.event.*; 007 008 /** 009 * I was suprised to see that you can't add ListSelectionListeners to JTables. 010 * This class lets you. ListSelectionEvents are fired when a user selects 011 * rows in the table. 012 * 013 * @author <a href="mailto:"></a> 014 * @version 1.0 015 */ 016 public class ListSelectionJTable 017 extends JTable 018 { 019 private Vector<ListSelectionListener> v 020 = new Vector<ListSelectionListener>(); 021 022 023 /** 024 * Creates a new <code>ListSelectionJTable</code> instance given a 025 * TableModel. 026 * 027 * @param t a <code>TableModel</code> value 028 * @deprecated 029 * FIXME: this just calls super(t) 030 */ 031 @Deprecated public ListSelectionJTable(TableModel t) 032 { 033 super(t); 034 } 035 036 /** 037 * Registers the listener. 038 * 039 * @param x a <code>ListSelectionListener</code> value 040 */ 041 public void addListSelectionListener(ListSelectionListener x) 042 { 043 v.add(x); 044 } 045 046 /** 047 * Notifies listeners of ListSelectionEvent. 048 * 049 * @param e a <code>ListSelectionEvent</code> value 050 */ 051 public void notifyListeners(ListSelectionEvent e) 052 { 053 //super.notifyListeners(e); 054 if(v==null) return; 055 for(ListSelectionListener y : v) { 056 y.valueChanged(e); 057 } 058 059 } 060 061 062 /** 063 * Called when the selected row(s) have changed. Calls notifyListeners. 064 * 065 * @param e a <code>ListSelectionEvent</code> value 066 */ 067 public void valueChanged(ListSelectionEvent e) 068 { 069 super.valueChanged(e); 070 notifyListeners(e); 071 } 072 073 074 075 076 }