JTabel 背景设置半透明 与某些区域的单元格设置背景色

在java开发当中,可能应某些需求要把JTabelde 背景设置为半透明


JTabel 背景设置半透明 与某些区域的单元格设置背景色_第1张图片
要显示前面第一行的标题,就等吧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设置透明,没有上面截图的效果的,效果如下:
JTabel 背景设置半透明 与某些区域的单元格设置背景色_第2张图片
 个人认为是JScrollPane 把JPanel覆盖部分

如果是只设置JScrollPane 透明没把JTabel设置透的结果也会不同
JTabel 背景设置半透明 与某些区域的单元格设置背景色_第3张图片
 

 设置某些区域的单元格的背景色:

		
		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);
		}

	

 

 

你可能感兴趣的:(JTabel 背景设置半透明 与某些区域的单元格设置背景色)