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