Ich habe ein Problem mit dem Header von meiner Table
ich habe mir die Sortierfunktion eingebaut welche auch hier im forum beschrieben ist
aber es gibt ein Problem ich habe oben im header immer das icon welches mir zeigt in welche richtung sortiert wurde aber in den anderen Spalten fehlt oben dann die üblich ansicht das heißt es fehlen die striche die die spalten trennen
so sieht es vorher aus:
und so danach:
ich wollte es so haben das man den pfel sieht aber die anderen spalten sollen aussehen wiue vorher
das ist der Code der in meiner Sortierklasse steht
welche public class SortDecorator extends DefaultCellRenderer ist
was muss ich machen um mein Problem zu lösen??
ich habe mir die Sortierfunktion eingebaut welche auch hier im forum beschrieben ist
aber es gibt ein Problem ich habe oben im header immer das icon welches mir zeigt in welche richtung sortiert wurde aber in den anderen Spalten fehlt oben dann die üblich ansicht das heißt es fehlen die striche die die spalten trennen
so sieht es vorher aus:
und so danach:
ich wollte es so haben das man den pfel sieht aber die anderen spalten sollen aussehen wiue vorher
das ist der Code der in meiner Sortierklasse steht
welche public class SortDecorator extends DefaultCellRenderer ist
Code:
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (table != null) {
JTableHeader header = table.getTableHeader();
if (header != null) {
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
}
setText((value == null) ? "" : value.toString());
if(arSorter == null)
if( table.convertColumnIndexToModel( column ) == this.iColumn ){
setBorder( BorderFactory.createRaisedBevelBorder() );
if( bDescending )
setIcon( createAscendingIcon() );
else
setIcon( createDescendingIcon() );
}
else{
setIcon( null );
setBorder( BorderFactory.createEmptyBorder() );
}
else
{
for (int x = 0; arSorter != null && x != arSorter.size(); x++)
{
int z = ( (Integer) arSorter.get(x)).intValue();
if (table.convertColumnIndexToModel(column) == z)
{
setBorder(BorderFactory.createRaisedBevelBorder());
Color color = getBackground();
//ist eigentlich die darker funktion, nur kann man sich seinen Factor selber setzen!
for(int i = x; i != arSorter.size(); i++)
{
color = new Color((int)Math.max((int)color.getRed() * FACTOR,0),
(int)Math.max((int)color.getGreen() * FACTOR,0),
(int)Math.max((int)color.getBlue()* FACTOR,0));
}
setBackground(color);
if (bDescending)
setIcon(createAscendingIcon());
else
setIcon(createDescendingIcon());
}
else if (!arSorter.contains(new Integer(column)))
{
setIcon(null);
setBorder(BorderFactory.createEmptyBorder());
}
} }
return this;
}
/***************************************************************************
* Funktion zeichnet das Icon und gibt es danach zurück
* @return das Icon
**************************************************************************/
protected Icon createAscendingIcon(){
return new Icon(){
public int getIconHeight() {
return 3;
}
public int getIconWidth() {
return 5;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
g.setColor( Color.BLACK );
g.drawLine( x, y, x+4, y );
g.drawLine( x+1, y+1, x+3, y+1 );
g.drawLine( x+2, y+2, x+2, y+2 );
}
}; }
/****************************************************************************
* Funktion zeichnet das Icon und gibt es zurück
* @return das Icon
***************************************************************************/
protected Icon createDescendingIcon() {
return new Icon(){
public int getIconHeight() {
return 3;
}
public int getIconWidth() {
return 5;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
g.setColor( Color.BLACK );
g.drawLine( x, y+2, x+4, y+2 );
g.drawLine( x+1, y+1, x+3, y+1 );
g.drawLine( x+2, y, x+2, y );
}
};
}
//------------------------------------------------------------------
}
was muss ich machen um mein Problem zu lösen??