Mad*_*lur 8 java swing jtable tablecellrenderer
我有一个基本的Swing的JTable和要求是任何细胞被点击时,整行应突出,同时又有所单击单元格应该从突出显示行的其余部分不同的颜色.
目前,我已将isRowSelectionAllowed视为true
我尝试使用自定义TableCellRenderer,如下所示:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用(整行以红色突出显示).
我还尝试按如下方式设置UIManager属性:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Run Code Online (Sandbox Code Playgroud)
但这似乎也不起作用(即使我尝试使用边框设置边框时)
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
Run Code Online (Sandbox Code Playgroud)
效果很好)
你能否提出我可能需要做的建议?
Dev*_*ler 10
试试这个:
jtable.setCellSelectionEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后在 getTableCellRendererComponent
if (table.isCellSelected(row, column))
setForeground(Color.red);
else if (table.isRowSelected(row))
setForeground(Color.green);
else if (table.isColumnSelected(column))
setForeground(Color.blue);
else
setForeground(Color.black);
Run Code Online (Sandbox Code Playgroud)
这将使所选单元格呈现红色,其余行呈绿色,其余列呈蓝色.注意:单元格选择要求选择模型为单一,其他选择模型可能会导致不可预测的行为.
| 归档时间: |
|
| 查看次数: |
23199 次 |
| 最近记录: |