?
Hallo
ich muss den TableRenderer überschreiben und will aber nicht dass das Grid angezeigt wird. Dies in Kombination klappt irgentwie nicht.
Die entsprechenden Zeilen habe ich schon gesetzt. Ohne den Renderer funktioniert es das kein Grid angezeigt wird.
Was mache ich falsch?
Weiß jemand Rat?
Vielen dank schon mal für die antworten.
[cpp]
import java.awt.Color;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class MyFrame extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
new MyFrame();
}
JTable table = new JTable();
DefaultTableModel model = new DefaultTableModel();
public MyFrame() {
table.setModel(model);
model.addColumn("X1");
model.addColumn("X2");
model.addColumn("X3");
table.setDefaultRenderer(Object.class, new MarkCells());
String[] rowData = new String[3];
for (int j=0; j <= 2; ++j) {
rowData[j] = "";
}
for (int i=0; i<= 20; ++i) {
model.addRow(rowData);
}
model.setValueAt("Hallo;0", 2, 2);
// wirkt nicht???
table.setShowGrid(false);
table.setGridColor(Color.black);
this.getContentPane().add(new JScrollPane(table));
setBounds(0,0,350,400);
setVisible(true);
}
class MarkCells extends JLabel implements TableCellRenderer {
private Color[] bgColors = new Color[] { Color.RED, Color.BLUE, Color.GREEN };
public MarkCells() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
String str = value.toString();
this.setText(str);
this.setForeground(Color.white);
if (!"".equals(str)) {
int warriorID = Integer.parseInt(str.substring(str.length() - 1));
setBackground(bgColors[warriorID]);
// setBackground(Color.RED);
} else {
setBackground(Color.black);
}
this.setBorder(BorderFactory.createLineBorder(Color.black, 0));
return this;
}
}
}
[code]