B
ByeBye 31659
Hallo,
ich habe zwei Fragen:
1. Kann mir jemand allgemein erklären, wozu man einen Renderer und wozu ein TableModel braucht? Der Renderer ist doch für die grafische Zeichnung der Tabelle zuständig, oder? Wozu braucht man dann noch ein Model?
2. Ich habe eine Tabelle mit x Spalten. Wenn nun eine Zelle in der Spalte 4 leer ist, so soll diese einen grünen Hintergrund bekommen. Wenn etwas in dieser Zelle steht, soll der HIntergrund rot sein. Als Ergänzung soll es später eventuell noch so gemacht werden, das dann die ganze Zeile die jeweilige Farbe erhält...
Ich hab natürlich schon etwas versucht, aber leider funktioniert das nicht. Hier mein bisheriger Code:
Fenster mit Tabelle:
Mein Renderer:
Kann mir da jemand weiterhelfen?
ich habe zwei Fragen:
1. Kann mir jemand allgemein erklären, wozu man einen Renderer und wozu ein TableModel braucht? Der Renderer ist doch für die grafische Zeichnung der Tabelle zuständig, oder? Wozu braucht man dann noch ein Model?
2. Ich habe eine Tabelle mit x Spalten. Wenn nun eine Zelle in der Spalte 4 leer ist, so soll diese einen grünen Hintergrund bekommen. Wenn etwas in dieser Zelle steht, soll der HIntergrund rot sein. Als Ergänzung soll es später eventuell noch so gemacht werden, das dann die ganze Zeile die jeweilige Farbe erhält...
Ich hab natürlich schon etwas versucht, aber leider funktioniert das nicht. Hier mein bisheriger Code:
Fenster mit Tabelle:
Code:
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Fenster extends JFrame {
JTable tbl = null;
TableModel model = null;
TableSorter sorter = null;
JScrollPane scrPaneTable = null;
String header[] = {"ID", "muh"};
String data[][] = {{"hallo", "duhu"}, {"selber", ""}};
public Fenster(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100,100,400,400);
tbl = new JTable(data, header);
tbl.setDefaultRenderer(tbl.getColumnClass(0), new MyTableCellRenderer());
tbl.setPreferredSize(new Dimension(200,200));
scrPaneTable = new JScrollPane(tbl);
scrPaneTable.setPreferredSize(new Dimension(200,200));
getContentPane().add(scrPaneTable);
setVisible(true);
}
}
Mein Renderer:
Code:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class MyTableCellRenderer extends JLabel implements TableCellRenderer {
Color color = null;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(column == 1){
if(value.toString().equals("")){
color = Color.green;
}
else{
color = Color.red;
}
}
setBackground(color);
setText(value.toString());
return this;
}
@Override
public void setBackground(Color arg0) {
// TODO Auto-generated method stub
super.setBackground(arg0);
}
}
Kann mir da jemand weiterhelfen?