java ,swing, jtable ,设置单元格背景色

该博客介绍了如何在Java Swing环境中,利用JTable组件结合自定义的EvenOddRenderer类,动态地为表格的特定单元格设置背景色。通过创建和填充一个ArrayList来指定要改变颜色的单元格位置,并在getTableCellRendererComponent方法中实现颜色的切换逻辑。
摘要由CSDN通过智能技术生成
package jetsennet.install.util;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

class EvenOddRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;
private List<String[]> positioins;

public EvenOddRenderer(List<String[]> _positioins){
this.positioins = _positioins;
}

public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus,
int row, int col) {

for(int i=0; i<table.getRowCount(); i++){
if (row == i){
this.setBackground(Color.white);
}
}
for(String[] rowAndCol : this.positioins){
int _row= Integer.valueOf(rowAndCol[0]);
int _col= Integer.valueOf(rowAndCol[1]);

if( _row == row && _col == col) {
this.setBackground(Color.yellow);
}
}
this.setText(value.toString());
return this;
}
}
public class ResizeTable {

public static void main(String args[]) {

final String columnNames[] = { "#", "English", "Roman" };
final Object rowData[][] = { { "1", "one", "I" },{ "2", "two", "II" }, { "4", "tahree", "III" },{ "3", "three", "III" },{ "5", "thasdfree", "III" }};
final JTable table = new JTable(rowData, columnNames);
JScrollPane scrollPane = new JScrollPane(table);

//坐标值
String [] arr0= {"1","1"};
String [] arr1= {"1","0"};
String [] arr2= {"0","2"};
String [] arr3= {"2","2"};
String [] arr4= {"3","2"};
List<String[]> _list= new ArrayList<String[]>();
_list.add(arr0);
_list.add(arr1);
_list.add(arr2);
_list.add(arr3);
_list.add(arr4);
EvenOddRenderer tablecellRender = new EvenOddRenderer(_list);
table.setDefaultRenderer(Object.class,tablecellRender);

JFrame frame = new JFrame("Resizing Table");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setBounds(400, 200, 600, 200);
frame.setVisible(true);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值