我正在使用 NimbusLookAndFeel。通过这种外观和感觉,JTable 的单元格背景可以是白色和浅灰色(这取决于行号)。
现在,我正在编写一些实现 TableCellRenderer 的自定义单元格渲染器。我需要根据 JTable 中单元格的位置设置这些渲染器的背景。
public class MyCellRenderer extends JLabel implements TableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Color bgColor = //need to retrieve the right cell background color
setBackground(bgColor);
return this;
}
}
我怎样才能得到这样的颜色值?
从技术上讲,您可以通过 UIManager 访问颜色
Color alternate = UIManager.getColor("Table.alternateRowColor");
实际上,我不建议从头开始编写渲染器 - 有很多细节需要考虑才能使其正确。这些细节的处理方式如下:在 SwingX 中(对我有偏见:-)
希望你自己做逻辑;-)。这是一个工作片段(假设您想按行而不是按列着色,但更改它......微不足道):
TableCellRenderer renderer = new TableCellRenderer() {
JLabel label = new JLabel();
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
label.setOpaque(true);
label.setText("" + value);
Color alternate = UIManager.getColor("Table.alternateRowColor");
if (row % 2 == 1) {
label.setBackground(alternate);
} else {
label.setBackground(Color.WHITE);
}
return label;
}
};
table.setDefaultRenderer(Object.class, renderer);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)