Hallo!
es handelt sich sicherlich um etwas einfaches,
aber ich komme einfach nicht darauf:
Ich Row- und normale Column-Header die jeweils
jLabels sind.
Ich weiße sie, wie im FAQ beschrieben,
der Tabelle bzw. die Zeilen-Überschriften dem Scrollpane zu:
Die entspr. Klassen dazu:
Nun würde ich gerne an einer Stelle in meinem Programm,
den zugewiesenen Text (setText) auslesen.
Ich dachte mir dazu etwas wie:
JLabel lab = (JLabel)table.getTableHeader().getColumnModel().getColumn(x).getHeaderValue();
und für die Zeilen
JLabel lab = (JLabel)sp.getRowHeader().getHeaderValue(y);
wobei natürlich beides nicht funktioniert...
Habt ihr vielleicht irgend einen Tipp wie ich das auslesen muss??
thx
seoman
es handelt sich sicherlich um etwas einfaches,
aber ich komme einfach nicht darauf:
Ich Row- und normale Column-Header die jeweils
jLabels sind.
Ich weiße sie, wie im FAQ beschrieben,
der Tabelle bzw. die Zeilen-Überschriften dem Scrollpane zu:
Code:
table.setTableHeader(new TableColumnHeader(table));
sp.setRowHeader(new TableRowHeader(table,sp));
Code:
class TableRowHeader
extends JViewport
implements AdjustmentListener
{
private JTable table;
private Cell cell;
public TableRowHeader(JTable table, JScrollPane parent) {
this.table = table;
cell = new Cell();
// Spaltenbreite setzen
setPreferredSize(new Dimension(18, 0));
parent.getVerticalScrollBar().addAdjustmentListener(this);
parent.getHorizontalScrollBar().addAdjustmentListener(this);
}
[...]
// Zelle für den Header einer Zeile
private class Cell
extends JLabel
{
public void set(int row)
{
// Zeilennummer setzen
setText(String.valueOf(row+1));
// Schrift setzen
setFont(TableRowHeader.this.getFont());
// Horizontale Ausrichtung setzen
setHorizontalAlignment(CENTER);
// Rahmen setzen
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
}
}
}
class TableColumnHeader
extends JTableHeader
{
public TableColumnHeader(final JTable tableContainingHeader)
{
// TableHeader ermitteln
JTableHeader th = tableContainingHeader.getTableHeader();
// Veränderung der Spaltenbreite verbieten
th.setResizingAllowed(false);
// Austauschen der Spalten verbieten
th.setReorderingAllowed(false);
// DefaultRenderer (für Spaltenüberschrift) setzen
th.setDefaultRenderer(
new DefaultTableCellRenderer () {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
// Spaltenüberschrift setzen
setText(String.valueOf(column+1));
// Schrift setzen
setFont(tableContainingHeader.getFont());
// Spaltenüberschrift zentrieren
setHorizontalAlignment(SwingConstants.CENTER);
// Rahmen setzen
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
// Zelle zurückgeben
return this;
}
});
// TableHeader setzen
tableContainingHeader.setTableHeader(th);
}
}
Nun würde ich gerne an einer Stelle in meinem Programm,
den zugewiesenen Text (setText) auslesen.
Ich dachte mir dazu etwas wie:
JLabel lab = (JLabel)table.getTableHeader().getColumnModel().getColumn(x).getHeaderValue();
und für die Zeilen
JLabel lab = (JLabel)sp.getRowHeader().getHeaderValue(y);
wobei natürlich beides nicht funktioniert...
Habt ihr vielleicht irgend einen Tipp wie ich das auslesen muss??
thx
seoman