java/JFTable/src/cz/frantovo/gui/tabulky/JTable.java
author František Kučera <franta-hg@frantovo.cz>
Sat Feb 28 16:51:54 2009 +0100 (2009-02-28)
changeset 0 0359f2c3b3ba
child 2 29fb34084b12
permissions -rwxr-xr-x
Prvotní přidání zdrojáků JFTable – Swingová tabulka s možností řazení
     1 package cz.frantovo.gui.tabulky;
     2 
     3 
     4 import java.awt.Point;
     5 import java.awt.event.MouseEvent;
     6 
     7 import javax.swing.ImageIcon;
     8 import javax.swing.table.TableModel;
     9 
    10 /**
    11  * Tahle t��da umo��uje jednoduch�m zp�sobem p�idat va�im tabulk�m funkci
    12  * �azen�. Sta�� ve va�� t��d� nahradit: <br>
    13  * "import javax.swing.JTable;" <br>
    14  * t�mto importem: " import cz.frantovo.gui.tabulky.JTable;<br>
    15  * <br>
    16  * Pomoc� kl�vesy ctrl jde �adit podle v�ce sloupc�" <br>
    17  * <br>
    18  * Tak� p�id�v� funkci zobrazov�n� tooltipu (zobrazuje obsah bu�ky)
    19  * 
    20  * Proto�e t��d�c� model a skute�n� model obsahuj� ��dky v jin�m po�ad�,<br>
    21  * je pot�eba p�epo��tat index z�skan� metodou getSelectedRow() na index ve skute�n�m modelu<br>
    22  * <br>
    23  * k tomu slou�� tento postup:<br>
    24  * int r = jTable1.getSelectedRow();<br>
    25  * int rr = ((TableSorterModel)tabulka.getModel()).modelIndex(r);<br>
    26  * <br> 
    27  * rr je potom index ��dku ve skute�n�m modelu. * 
    28  * 
    29  * @author František Kučera
    30  */
    31 public class JTable extends javax.swing.JTable {
    32 
    33         private static final long serialVersionUID = -5133441062459764995L;
    34 
    35         private TableSorterModel tableSorterModel;
    36 
    37         private TableModel realTableModel;
    38 
    39         private boolean showTooltips = false;
    40 
    41         public boolean isShowTooltips ()
    42         {
    43                 return showTooltips;
    44         }
    45 
    46         /** Nastavuje, zda se maj� zobrazovat tooltipy zobrazuj�c� obsah bu�ky */
    47         public void setShowTooltips (boolean showTooltips)
    48         {
    49                 this.showTooltips = showTooltips;
    50         }
    51 
    52         /**
    53          * Nastav� TableModel a zabal� ho do TableSorterModelu, tabulka t�m
    54          * z�sk� schopnost �azen� ��dk�
    55          */
    56     @Override
    57         public void setModel (TableModel dataModel)
    58         {
    59                 realTableModel = dataModel;
    60                 tableSorterModel = new TableSorterModel(dataModel);
    61 
    62                 tableSorterModel.setTableHeader(getTableHeader());
    63 
    64                 super.setModel(tableSorterModel);
    65         }
    66 
    67         /**
    68          * @return TableModel, kter� obsahuje data. Nen� tedy zabalen do
    69          *         TableSorterModelu
    70          */
    71         public TableModel getRealTableModel ()
    72         {
    73                 return realTableModel;
    74         }
    75 
    76         /**
    77          * @return TableSorterModel, kter� obaluje skute�n� TableModel, kter�
    78          *         obsahuje data. TableSorterModel slou�� pouze k �azen� polo�ek
    79          */
    80     @Override
    81         public TableModel getModel ()
    82         {
    83                 return super.getModel();
    84         }
    85 
    86         /**
    87          * Pokud je nastaveno showTooltips, zobrazuje v tooltipu obsah bu�ky pod
    88          * my�� (hod� se, pokud je obsah bu�ky p��li� dlouh�). Pokud bu�ka
    89          * obsahuje ImageIcon, pak tooltip zobrazuje ImageIcon.getDescription()
    90          */
    91     @Override
    92         public String getToolTipText (MouseEvent event)
    93         {
    94                 if (showTooltips) {
    95                         Point p = event.getPoint();
    96                         int col = columnAtPoint(p);
    97                         int rw = rowAtPoint(p);
    98                         if (col >= 0 && rw >= 0) {
    99                                 Object o = getValueAt(rw,
   100                                                       col);
   101                                 if (o != null) {
   102                                         if (o instanceof ImageIcon) {
   103                                                 return ((ImageIcon) o).getDescription();
   104                                         } else {
   105                                                 return o.toString();
   106                                         }
   107                                 }
   108                         }
   109                         return super.getToolTipText();
   110                 } else {
   111                         return super.getToolTipText();
   112                 }
   113         }
   114 
   115 }