我刚开始使用TableCellRenderers。我已经使用了Orcale文档和一些视频来获得一个可以工作的。要调用我所使用的渲染器,请使用以下代码:
table.getColumnModel().getColumn(x).setCellRenderer(new Renderer());对于我的表,我想对每一行使用它。我已经将列替换为行,但我的IDE显示它们不是这个名称的方法,这让我非常惊讶。
有没有某种代码可以getRow(x)?
如果需要,渲染器代码(为简化起见,上面的代码中去掉了参数)
int t;
public Renderer(int x){
this.t=x;
}
@Override
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
JLabel x = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
if(t==1){
x.setBackground(Color.GREEN);
}else{
x.setBackground(Color.WHITE);
}
return x;
}
}发布于 2021-08-02 16:25:19
您可以重写JTable的prepareRenderer方法
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row,
int column) {
int row = convertRowIndexToModel(row);
int column = convertColumnIndexToModel(column);
if (!isRowSelected(row)) {
if (column != 0 || row != 0) {
comp.setBackground(Color.RED);
}
}
return comp;
}
};发布于 2021-08-02 16:30:33
我不喜欢摆弄JTable本身,所以也许
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(t == 1 ? Color.green : Color.white);
return c;
};
});https://stackoverflow.com/questions/68624834
复制相似问题