您的位置:首页 > 编程语言 > Java开发

java swing jtable 给指定的(一个或多个)单元格设置背景色

2015-01-29 11:41 323 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: