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