在java开发当中,可能应某些需求要把JTabelde 背景设置为半透明
要显示前面第一行的标题,就等吧JTAbel添加到JScrollPane当中。要设置上面的效果就得JTabel同时设置背景透明,
JTable tabel=new JTable(tabel1){//重写方法
public Component prepareRenderer(TableCellRenderer renderer,
int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
if(c instanceof JComponent){
((JComponent)c).setOpaque(false);
}
return c;
}
};
tabel.setOpaque(false);
JScrollPane jsp=new JScrollPane(tabel);
jsp.getViewport().setOpaque(false);
jsp.setOpaque(false);
若是JScrollPane 没有设置透明而是把JTabel设置透明,没有上面截图的效果的,效果如下:
个人认为是JScrollPane 把JPanel覆盖部分
如果是只设置JScrollPane 透明没把JTabel设置透的结果也会不同
设置某些区域的单元格的背景色:
DefaultTableCellRenderer dtcr = new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if(column==5&&row==5)
setBackground(new java.awt.Color(255, 255, 0));
else
/**不可以少了else语句,否则会在一点击表格式化颜色会把全表格填充满*/
setBackground(new Color(255,255,255));
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
};
for(int i=0;i<7;i++){
table.getColumnModel().getColumn(i).setCellRenderer(dtcr);
}