Hallo,
ich habe eine JTabel erstellt, bei der nach klicken auf einen Spaltenkopf, das Erscheinungsbild des Spaltenkopfes sich ändern soll.
Hierzu benutze ich zwei Renderer, einen Renderer für das Standarderscheinungsbild und ein Renderer für das Erscheinungsbld nach Selektion einer Spalte.
Die hierzu erstellte Klasse funktioniert auch soweit.
Nur ein Problem besteht, was für mich nicht verständlich ist:
Im Kontruktor wird eine Referenz der Tabelle übergeben.
Wenn ich aus der Referenzvariable die Anzahl der Spalten ermitteln will erhalte ich als Anzahl "0".
Als Ersatzlösung habe ich die Anzahl der Spalten fest (hier columnCount=9) definiert.
Hat jemand eine Idee, warum die automatische Spaltenanzahl mit 0 quittiert wird?
Der Aufruf des Listernes erfolgt so:
Über eine Antwort würde ich mich freuen.
Gruss Hein_nieH
ich habe eine JTabel erstellt, bei der nach klicken auf einen Spaltenkopf, das Erscheinungsbild des Spaltenkopfes sich ändern soll.
Hierzu benutze ich zwei Renderer, einen Renderer für das Standarderscheinungsbild und ein Renderer für das Erscheinungsbld nach Selektion einer Spalte.
Die hierzu erstellte Klasse funktioniert auch soweit.
Nur ein Problem besteht, was für mich nicht verständlich ist:
Im Kontruktor wird eine Referenz der Tabelle übergeben.
Wenn ich aus der Referenzvariable die Anzahl der Spalten ermitteln will erhalte ich als Anzahl "0".
Als Ersatzlösung habe ich die Anzahl der Spalten fest (hier columnCount=9) definiert.
Hat jemand eine Idee, warum die automatische Spaltenanzahl mit 0 quittiert wird?
Java:
class TableHeaderMouseListener__1 extends MouseAdapter
{
//Der selekte Tabellenkopf ist während der selektion farbig darzustellen
private JTable table;
private int columnCount;
private Boolean [] arrColumnSelected;
public TableHeaderMouseListener__1(JTable table)
{
this.table = table;
//columnCount=this.table.getColumnModel().getColumnCount();//FIXME liefert 0
columnCount=9; //Ersatzloesung __________
arrColumnSelected = new Boolean[columnCount];
for (int i=0; i<columnCount; i++)
{
arrColumnSelected[i]=false;
}
}//Konstruktor
public void mouseClicked(MouseEvent event)
{
Point point = event.getPoint();
int column = table.columnAtPoint(point);
//JOptionPane.showMessageDialog(table, "Column count -> " + columnCount); //debug
//JOptionPane.showMessageDialog(table, "Column header #" + column + " -> " + str); //debug
this.arrColumnSelected[column] = !this.arrColumnSelected[column];
TableColumn tblcol=table.getColumnModel().getColumn(column);
if ( this.arrColumnSelected[column]==true )
tblcol.setHeaderRenderer( new MyTableCellRendererHeadSelected() );
else
tblcol.setHeaderRenderer( new MyTableCellRendererHead() );
}//mouseClick
}//TableHeaderMouseListener__1
Der Aufruf des Listernes erfolgt so:
Java:
table.getTableHeader().addMouseListener(new TableHeaderMouseListener__1(table));
Über eine Antwort würde ich mich freuen.
Gruss Hein_nieH