A. java swing控制項JTable 怎麼單獨設置某一行的顏色
這是我以前做的:
(JTabletable,Objectvalue,
booleanisSelected,booleanhasFocus,introw,intcolumn)
{
//如果是圖標,就要顯示圖標,否則就顯示文本
if(valueinstanceofIcon)
this.setIcon((Icon)value);
else
this.setText(value.toString());
//如果被選中
if(isSelected)
//設置選定單元格的背景色。單元格渲染器可以使用此顏色填充選定單元格。
//返回選定單元格的背景色。
super.setBackground(table.getSelectionBackground());
else
this.setBackground(table.getBackground());
//設置居中
this.setHorizontalAlignment(JLabel.CENTER);
this.setToolTipText(value.toString());
returnthis;
}
ps.要在JTable中添加這個渲染器。
樣式:
附:自己多查API
javax.swing.table.TableCellRenderer
此介面定義了要成為JTable中單元格渲染器的任意對象所需的方法
(JTabletable,
Objectvalue,
booleanisSelected,
booleanhasFocus,
introw,
intcolumn)返回用於繪制單元格的組件。此方法用於在繪制前適當地配置渲染器。
TableCellRenderer還負責呈現表示該表當前DnD放置位置的單元格(如果有)。如果此呈現器負責呈現DnD放置位置,則它應該直接查詢表以確定給定的行和列是否表示放置位置:
JTable.DropLocationdropLocation=table.getDropLocation();if(dropLocation!=null
&&!dropLocation.isInsertRow()
&&!dropLocation.isInsertColumn()
&&dropLocation.getRow()==row
&&dropLocation.getColumn()==column){
//
//sorenderitspecially,perhapswithadifferentcolor
}
在列印操作期間,將調用此方法(isSelected和hasFocus為
false)阻止選擇和焦點在列印輸出中出現。要根據是否列印表進行其他定製,檢查JComponent.isPaintingForPrint()
的返回值。
參數:table-要求渲染器繪制的JTable;可以為nullvalue-要呈現的單元格的值。由具體的渲染器解釋和繪制該值。例如,如果value是字元串
"true",則它可呈現為字元串,或者也可呈現為已選中的復選框。null是有效值
isSelected-如果使用選中樣式的高亮顯示來呈現該單元格,則為true;否則為false
hasFocus-如果為
true,則適當地呈現單元格。例如,在單元格上放入特殊的邊框,如果可以編輯該單元格,則以彩色呈現它,用於指示正在進行編輯
row-要繪制的單元格的行索引。繪制頭時,row值是-1
column-要繪制的單元格的列索引
javax.swing.JTable#getColumn
publicTableColumngetColumn(Objectidentifier)返回表中列的TableColumn對象,當使用equals進行比較時,表的標識符等於
identifier。
javax.swing.table.TableColumn#setCellRenderer
publicvoidsetCellRenderer(TableCellRenderercellRenderer)