franta-hg@0: package cz.frantovo.gui.tabulky; franta-hg@0: franta-hg@0: franta-hg@0: import java.awt.Point; franta-hg@0: import java.awt.event.MouseEvent; franta-hg@0: franta-hg@0: import javax.swing.ImageIcon; franta-hg@0: import javax.swing.table.TableModel; franta-hg@0: franta-hg@0: /** franta-hg@0: * Tahle t��da umo��uje jednoduch�m zp�sobem p�idat va�im tabulk�m funkci franta-hg@0: * �azen�. Sta�� ve va�� t��d� nahradit:
franta-hg@0: * "import javax.swing.JTable;"
franta-hg@0: * t�mto importem: " import cz.frantovo.gui.tabulky.JTable;
franta-hg@0: *
franta-hg@0: * Pomoc� kl�vesy ctrl jde �adit podle v�ce sloupc�"
franta-hg@0: *
franta-hg@0: * Tak� p�id�v� funkci zobrazov�n� tooltipu (zobrazuje obsah bu�ky) franta-hg@0: * franta-hg@0: * Proto�e t��d�c� model a skute�n� model obsahuj� ��dky v jin�m po�ad�,
franta-hg@0: * je pot�eba p�epo��tat index z�skan� metodou getSelectedRow() na index ve skute�n�m modelu
franta-hg@0: *
franta-hg@0: * k tomu slou�� tento postup:
franta-hg@0: * int r = jTable1.getSelectedRow();
franta-hg@0: * int rr = ((TableSorterModel)tabulka.getModel()).modelIndex(r);
franta-hg@0: *
franta-hg@0: * rr je potom index ��dku ve skute�n�m modelu. * franta-hg@0: * franta-hg@0: * @author František Kučera franta-hg@0: */ franta-hg@0: public class JTable extends javax.swing.JTable { franta-hg@0: franta-hg@0: private static final long serialVersionUID = -5133441062459764995L; franta-hg@0: franta-hg@0: private TableSorterModel tableSorterModel; franta-hg@0: franta-hg@0: private TableModel realTableModel; franta-hg@0: franta-hg@0: private boolean showTooltips = false; franta-hg@0: franta-hg@0: public boolean isShowTooltips () franta-hg@0: { franta-hg@0: return showTooltips; franta-hg@0: } franta-hg@0: franta-hg@0: /** Nastavuje, zda se maj� zobrazovat tooltipy zobrazuj�c� obsah bu�ky */ franta-hg@0: public void setShowTooltips (boolean showTooltips) franta-hg@0: { franta-hg@0: this.showTooltips = showTooltips; franta-hg@0: } franta-hg@0: franta-hg@0: /** franta-hg@0: * Nastav� TableModel a zabal� ho do TableSorterModelu, tabulka t�m franta-hg@0: * z�sk� schopnost �azen� ��dk� franta-hg@0: */ franta-hg@0: @Override franta-hg@0: public void setModel (TableModel dataModel) franta-hg@0: { franta-hg@0: realTableModel = dataModel; franta-hg@0: tableSorterModel = new TableSorterModel(dataModel); franta-hg@0: franta-hg@0: tableSorterModel.setTableHeader(getTableHeader()); franta-hg@0: franta-hg@0: super.setModel(tableSorterModel); franta-hg@0: } franta-hg@0: franta-hg@0: /** franta-hg@0: * @return TableModel, kter� obsahuje data. Nen� tedy zabalen do franta-hg@0: * TableSorterModelu franta-hg@0: */ franta-hg@0: public TableModel getRealTableModel () franta-hg@0: { franta-hg@0: return realTableModel; franta-hg@0: } franta-hg@0: franta-hg@0: /** franta-hg@0: * @return TableSorterModel, kter� obaluje skute�n� TableModel, kter� franta-hg@0: * obsahuje data. TableSorterModel slou�� pouze k �azen� polo�ek franta-hg@0: */ franta-hg@0: @Override franta-hg@0: public TableModel getModel () franta-hg@0: { franta-hg@0: return super.getModel(); franta-hg@0: } franta-hg@0: franta-hg@0: /** franta-hg@0: * Pokud je nastaveno showTooltips, zobrazuje v tooltipu obsah bu�ky pod franta-hg@0: * my�� (hod� se, pokud je obsah bu�ky p��li� dlouh�). Pokud bu�ka franta-hg@0: * obsahuje ImageIcon, pak tooltip zobrazuje ImageIcon.getDescription() franta-hg@0: */ franta-hg@0: @Override franta-hg@0: public String getToolTipText (MouseEvent event) franta-hg@0: { franta-hg@0: if (showTooltips) { franta-hg@0: Point p = event.getPoint(); franta-hg@0: int col = columnAtPoint(p); franta-hg@0: int rw = rowAtPoint(p); franta-hg@0: if (col >= 0 && rw >= 0) { franta-hg@0: Object o = getValueAt(rw, franta-hg@0: col); franta-hg@0: if (o != null) { franta-hg@0: if (o instanceof ImageIcon) { franta-hg@0: return ((ImageIcon) o).getDescription(); franta-hg@0: } else { franta-hg@0: return o.toString(); franta-hg@0: } franta-hg@0: } franta-hg@0: } franta-hg@0: return super.getToolTipText(); franta-hg@0: } else { franta-hg@0: return super.getToolTipText(); franta-hg@0: } franta-hg@0: } franta-hg@0: franta-hg@0: }