1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| public class JTableCellRendererExemple {
public static void main(String[] args) {
JFrame frame = new JFrame("Exemple");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
String[] columns = {"id", "valeur"};
Object[][] rowData = {
{ "machin", 100 },
{ "truc", 0 },
{ "bidule", -100 },
};
JTable table = new JTable(new DefaultTableModel( rowData, columns ));
table.getColumnModel().getColumn(1).setCellRenderer(new ExempleCellRenderer());
panel.add(table.getTableHeader(),BorderLayout.NORTH);
panel.add(new JScrollPane(table));
frame.add(panel);
JPanel buttonPanel = new JPanel();
addButton(buttonPanel, table, -100);
addButton(buttonPanel, table, 0);
addButton(buttonPanel, table, 100);
frame.add(buttonPanel, BorderLayout.SOUTH);
frame.setSize(600, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static void addButton(JPanel buttonPanel, JTable table, int value) {
JButton button = new JButton("add "+value);
button.addActionListener(e-> add(table, value));
buttonPanel.add(button);
}
private static void add(JTable table, int value) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(new Object[]{"Added", value});
}
public static class ExempleCellRenderer extends DefaultTableCellRenderer {
@Override
protected void setValue(Object value) {
super.setValue(value);
if ( value instanceof Integer ) {
Integer intValue = (Integer) value;
if (intValue<0 ) {
setForeground(Color.RED);
}
else if ( intValue==0 ) {
setForeground(Color.BLACK);
}
else if ( intValue>0 ) {
setForeground(Color.BLUE);
}
}
}
}
} |
Partager