java/JFTable/src/cz/frantovo/gui/tabulky/JTable.java
changeset 0 0359f2c3b3ba
child 2 29fb34084b12
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/java/JFTable/src/cz/frantovo/gui/tabulky/JTable.java	Sat Feb 28 16:51:54 2009 +0100
     1.3 @@ -0,0 +1,115 @@
     1.4 +package cz.frantovo.gui.tabulky;
     1.5 +
     1.6 +
     1.7 +import java.awt.Point;
     1.8 +import java.awt.event.MouseEvent;
     1.9 +
    1.10 +import javax.swing.ImageIcon;
    1.11 +import javax.swing.table.TableModel;
    1.12 +
    1.13 +/**
    1.14 + * Tahle t��da umo��uje jednoduch�m zp�sobem p�idat va�im tabulk�m funkci
    1.15 + * �azen�. Sta�� ve va�� t��d� nahradit: <br>
    1.16 + * "import javax.swing.JTable;" <br>
    1.17 + * t�mto importem: " import cz.frantovo.gui.tabulky.JTable;<br>
    1.18 + * <br>
    1.19 + * Pomoc� kl�vesy ctrl jde �adit podle v�ce sloupc�" <br>
    1.20 + * <br>
    1.21 + * Tak� p�id�v� funkci zobrazov�n� tooltipu (zobrazuje obsah bu�ky)
    1.22 + * 
    1.23 + * Proto�e t��d�c� model a skute�n� model obsahuj� ��dky v jin�m po�ad�,<br>
    1.24 + * je pot�eba p�epo��tat index z�skan� metodou getSelectedRow() na index ve skute�n�m modelu<br>
    1.25 + * <br>
    1.26 + * k tomu slou�� tento postup:<br>
    1.27 + * int r = jTable1.getSelectedRow();<br>
    1.28 + * int rr = ((TableSorterModel)tabulka.getModel()).modelIndex(r);<br>
    1.29 + * <br> 
    1.30 + * rr je potom index ��dku ve skute�n�m modelu. * 
    1.31 + * 
    1.32 + * @author František Kučera
    1.33 + */
    1.34 +public class JTable extends javax.swing.JTable {
    1.35 +
    1.36 +        private static final long serialVersionUID = -5133441062459764995L;
    1.37 +
    1.38 +        private TableSorterModel tableSorterModel;
    1.39 +
    1.40 +        private TableModel realTableModel;
    1.41 +
    1.42 +        private boolean showTooltips = false;
    1.43 +
    1.44 +        public boolean isShowTooltips ()
    1.45 +        {
    1.46 +                return showTooltips;
    1.47 +        }
    1.48 +
    1.49 +        /** Nastavuje, zda se maj� zobrazovat tooltipy zobrazuj�c� obsah bu�ky */
    1.50 +        public void setShowTooltips (boolean showTooltips)
    1.51 +        {
    1.52 +                this.showTooltips = showTooltips;
    1.53 +        }
    1.54 +
    1.55 +        /**
    1.56 +         * Nastav� TableModel a zabal� ho do TableSorterModelu, tabulka t�m
    1.57 +         * z�sk� schopnost �azen� ��dk�
    1.58 +         */
    1.59 +    @Override
    1.60 +        public void setModel (TableModel dataModel)
    1.61 +        {
    1.62 +                realTableModel = dataModel;
    1.63 +                tableSorterModel = new TableSorterModel(dataModel);
    1.64 +
    1.65 +                tableSorterModel.setTableHeader(getTableHeader());
    1.66 +
    1.67 +                super.setModel(tableSorterModel);
    1.68 +        }
    1.69 +
    1.70 +        /**
    1.71 +         * @return TableModel, kter� obsahuje data. Nen� tedy zabalen do
    1.72 +         *         TableSorterModelu
    1.73 +         */
    1.74 +        public TableModel getRealTableModel ()
    1.75 +        {
    1.76 +                return realTableModel;
    1.77 +        }
    1.78 +
    1.79 +        /**
    1.80 +         * @return TableSorterModel, kter� obaluje skute�n� TableModel, kter�
    1.81 +         *         obsahuje data. TableSorterModel slou�� pouze k �azen� polo�ek
    1.82 +         */
    1.83 +    @Override
    1.84 +        public TableModel getModel ()
    1.85 +        {
    1.86 +                return super.getModel();
    1.87 +        }
    1.88 +
    1.89 +        /**
    1.90 +         * Pokud je nastaveno showTooltips, zobrazuje v tooltipu obsah bu�ky pod
    1.91 +         * my�� (hod� se, pokud je obsah bu�ky p��li� dlouh�). Pokud bu�ka
    1.92 +         * obsahuje ImageIcon, pak tooltip zobrazuje ImageIcon.getDescription()
    1.93 +         */
    1.94 +    @Override
    1.95 +        public String getToolTipText (MouseEvent event)
    1.96 +        {
    1.97 +                if (showTooltips) {
    1.98 +                        Point p = event.getPoint();
    1.99 +                        int col = columnAtPoint(p);
   1.100 +                        int rw = rowAtPoint(p);
   1.101 +                        if (col >= 0 && rw >= 0) {
   1.102 +                                Object o = getValueAt(rw,
   1.103 +                                                      col);
   1.104 +                                if (o != null) {
   1.105 +                                        if (o instanceof ImageIcon) {
   1.106 +                                                return ((ImageIcon) o).getDescription();
   1.107 +                                        } else {
   1.108 +                                                return o.toString();
   1.109 +                                        }
   1.110 +                                }
   1.111 +                        }
   1.112 +                        return super.getToolTipText();
   1.113 +                } else {
   1.114 +                        return super.getToolTipText();
   1.115 +                }
   1.116 +        }
   1.117 +
   1.118 +}