Ich wollte die 7 Reihen in meinem Fall mit allen verschiedenen Farben färben, aber es ist nicht ganze Reihe aber nur erste Spalte Färbung ...Wie wird die Farbe in einer Zeile mit Hilfe von hashMap gesetzt?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class UsingHashTable extends JFrame {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object rowData[][] = {
{ "Row1", "Row1", "Row1" },
{ "Row2", "Row2", "Row2" },
{ "Row3", "Row3", "Row3" },
{ "Row4", "Row4", "Row4" },
{ "Row5", "Row5", "Row5" },
{ "Row6", "Row6", "Row6" },
{ "Row7", "Row7", "Row7" }
};
Object columnNames[] = { "Column One", "Column Two", "Column Three" };
JTable table = new JTable(rowData, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
table.setDefaultRenderer(Object.class, new Renderit());
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
Here I Klasse machen bin mit dem Job und initialisieren Sie die Karte zu tun dann verwende ich den Schlüssel für die Zeile zu überprüfen, aber es ist nicht zu helfen ...
class Renderit extends DefaultTableCellRenderer {
Map<Integer, Color> map = new HashMap<>();
public renderit() {
map.put(0, Color.blue);
map.put(1, Color.yellow);
map.put(2, Color.red);
map.put(3, Color.green);
map.put(4, Color.pink);
map.put(5, Color.orange);
map.put(6, Color.magenta);
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
Component comp = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column
);
for(Map.Entry<Integer, Color> enp : map.entrySet()) {
int key = enp.getKey();
if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
} else if(key==row) {
table.setBackground(enp.getValue());
}
}
return comp;
}
}
ich weiß nicht, wo ich mache Fehler bitte helfen.
Unrelated auf Ihre Frage, aber warum haben Sie eine Kette von 7' if-anderes 's wenn sie alle den gleichen Zustand haben? –