[英]Setting the Color on the row of the JTable using JColorChooser
如果您希望能夠為每行分別着色,那么一種方法是將Color作為數據的一部分存儲在TableModel中。 因此,您將需要在模型中將顏色添加為列。
但是您不想在表視圖中顯示此列,因此需要從視圖中將其刪除:
table.removeColumn( table.getColumn(...) );
接下來,您將需要為表格添加自定義呈現。 一種方法是為整個行添加渲染。 查看表行渲染以獲取此方法的示例。
因此,渲染的基本代碼如下所示:
Color background = table.getTableModel.getValueAt(row, ???);
if (background != null)
c.setBackground( background );
當顯示顏色時,您需要將顏色保存到TableModel中:
table.getTableModel().setValueAt(color, table.getSelectedRow(), ???);
另一種方法是將行和顏色保存在map<Integer, Color>
(use table.getSelectedRow() )
要從JColorchooser捕獲顏色,請使用: Color selectedColor = myColorChooser.getSelectionModel().getSelectedColor();
然后,修改默認渲染器:
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
column);
if (listOfColor.containKey(row)) {
c.setBackground(listOfColor.get(row));
}
DefaultTableCellRenderer centerRenderer = (DefaultTableCellRenderer) c;
centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
return c;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.