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 +}