[英]Adding coloured row to JTable
我有一個要填寫的表格和3個chekbox(黃色-橙色-紅色),當我填寫表格並選擇一種顏色時,我單擊一個按鈕,它將向Jtable添加一行白色的選定顏色。 我使用了TableCellRenderer,它可以工作,但是當我進行三到四次操作時,所有行都被選中了復選框。 如何使每一行都變成他的顏色? 這是我的代碼:
JTable table = new JTable(
new DefaultTableModel(new Object[][] {}, columnNames));
TableColumn column1 = table.getColumnModel().getColumn(
0);
column1.setCellRenderer(getRenderer());
TableColumn column3 = table.getColumnModel().getColumn(
1);
column3.setCellRenderer(getRenderer());
TableColumn column2 = table.getColumnModel().getColumn(
2);
column2.setCellRenderer(getRenderer());
String desc = display.getSelectedItem().toString();
DefaultTableModel tm = (DefaultTableModel) table.getModel();
String numcam = num_cam;
String timeStamp = new SimpleDateFormat(
"yyyy-MM-dd--HH:mm:ss").format(Calendar
.getInstance().getTime());
tm.addRow(new Object[] { new String(timeStamp), new String(numcam),
new String(desc) });
table.setModel(tm);
// reinitialiser les boutons apres le click
buttonGroup.clearSelection();
buttonGroup2.clearSelection();
還有我的單元格渲染器代碼
private static TableCellRenderer getRenderer() {
return new DefaultTableCellRenderer() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component tableCellRendererComponent = super
.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
tableCellRendererComponent.setBackground(Color.black);
setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
// verification de l couleur du bouton clické
if (yellow.isSelected()) {
tableCellRendererComponent.setForeground(new Color(255,
255, 51));
} else if (orange.isSelected()) {
tableCellRendererComponent.setForeground(new Color(255,
153, 0));
} else if (red.isSelected()) {
tableCellRendererComponent.setForeground(Color.RED);
}
return tableCellRendererComponent;
}
};
}
如何使每一行都變成他的顏色?
我不清楚這個問題:
您是否要使每一行都具有相同的顏色? 如果是,那么每次選擇新顏色時都需要調用table.repaint()。 所有行將使用新顏色重新渲染
或者,您是否要根據添加行時選擇的顏色,使每一行都具有不同的顏色? 如果是,那么您需要向TableModel添加另一列以存儲該行的選定顏色。 然后,在渲染器中,您需要從TableModel中獲取Color。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.