Hallo zusammen,
ich habe eine JTable und ein zugehörigen TableCellRenderer.
Ich möchte nur das im Header in der ersten Spalte ein Pfeil beim Namen steht.
Hier ist die TableCellRenderer Klasse:
Trotzdem wird bei allen Headercolumns der Pfeil gezeichnet. Ich verstehe einfach net warum. Ich habe doch angegeben nur da wo column == 0 ist ?
ich habe eine JTable und ein zugehörigen TableCellRenderer.
Ich möchte nur das im Header in der ersten Spalte ein Pfeil beim Namen steht.
Hier ist die TableCellRenderer Klasse:
Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
public class MyRenderer extends JLabel implements TableCellRenderer {
private Component image;
private TableCellRenderer renderer;
public MyRenderer(TableCellRenderer renderer) {
this.renderer = renderer;
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = renderer.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
setText(value.toString());
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
if (c instanceof JLabel && column == 0) {
JLabel l = (JLabel) c;
l.setHorizontalTextPosition(JLabel.LEFT);
int modelColumn = table.convertColumnIndexToModel(column);
l.setIcon(createAscendingIcon());
}
return c;
}
public 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);
}
};
}
}
Trotzdem wird bei allen Headercolumns der Pfeil gezeichnet. Ich verstehe einfach net warum. Ich habe doch angegeben nur da wo column == 0 ist ?