Hey Leute, ich bin mal wieder am werkeln und bin an einem Punkt angekommen wo ich euren Rat gebrauchen könnte.
Ich habe mir ein JTable erzeugt und möchte nun in meine erste Zelle ein ImageIcon setzen plus einen kleinen Text.
Ich habe mir eine Classe erstellt um mir mein DefaultTableCellRenderer Object zu erstellen.
Die Classe macht momentan noch nicht viel, außer eine Methode zu überschreiben welches prüft ob mein Object eine instanz von einem ImageIcon ist.
Ein DefaultTableCellRenderer erbt von einem JLabel, weswegen wir einfach setIcon machen können.
Nun kommt der Part wo der Computer Amok läuft.
Wie man sieht benutzt die JTable meinen Renderer, jedoch nicht richtig.
Ich habe versucht meine Table mittels table.setDefaultRenderer( ImageIcon.class, new ImageCellRenderer() ); zu rendern, jedoch ohne Erfolg. Als ich ImageIcon.class zu Object.class geändert habe geht es natürliche ohne Probleme...
Nun zu meinen Fragen:
1. Wie halte ich den Renderer auf in jede Zeile zu schreiben? Er soll nur in die erste Column schreiben...
2. Gibt es eine Möglichkeit den Renderer zu sagen das er den bestehenden Content in der Zelle stehen lassen soll und lediglich das Icon vor die Daten setzt?
Meine Vorschläge:
1. Der Zelle zwei Objecte vom Typ JLabel hinzufügen, dem ersten das Icon geben dem zweiten den Text. Mein Problem dabei ist jedoch das ich nicht weiß wie ich durch das DefaultTableModel zwei Objecte gleichzeitig hinzufügen kann...
Ich bitte um Hilfe, bei Fragen, haut in die Tasten!
Ich habe mir ein JTable erzeugt und möchte nun in meine erste Zelle ein ImageIcon setzen plus einen kleinen Text.
Ich habe mir eine Classe erstellt um mir mein DefaultTableCellRenderer Object zu erstellen.
Die Classe macht momentan noch nicht viel, außer eine Methode zu überschreiben welches prüft ob mein Object eine instanz von einem ImageIcon ist.
Java:
class ImageCellRenderer extends DefaultTableCellRenderer {
@Override
public void setValue( Object o ) {
if( o instanceof ImageIcon ) {
setIcon( (ImageIcon)o );
}
else
setText( o.toString() );
}
}
Ein DefaultTableCellRenderer erbt von einem JLabel, weswegen wir einfach setIcon machen können.
Nun kommt der Part wo der Computer Amok läuft.
Wie man sieht benutzt die JTable meinen Renderer, jedoch nicht richtig.
Ich habe versucht meine Table mittels table.setDefaultRenderer( ImageIcon.class, new ImageCellRenderer() ); zu rendern, jedoch ohne Erfolg. Als ich ImageIcon.class zu Object.class geändert habe geht es natürliche ohne Probleme...
Nun zu meinen Fragen:
1. Wie halte ich den Renderer auf in jede Zeile zu schreiben? Er soll nur in die erste Column schreiben...
2. Gibt es eine Möglichkeit den Renderer zu sagen das er den bestehenden Content in der Zelle stehen lassen soll und lediglich das Icon vor die Daten setzt?
Meine Vorschläge:
1. Der Zelle zwei Objecte vom Typ JLabel hinzufügen, dem ersten das Icon geben dem zweiten den Text. Mein Problem dabei ist jedoch das ich nicht weiß wie ich durch das DefaultTableModel zwei Objecte gleichzeitig hinzufügen kann...
Ich bitte um Hilfe, bei Fragen, haut in die Tasten!