自定义JTable中的单元格背景
自定义JTable中的单元格背景,需重写它的渲染器。代码如下:
import java.awt.BorderLayout;import java.awt.Dimension;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class JTableDemo extends JPanel{private JTable table;private DefaultTableModel tableModel;private Vector<String> rowItem;private String [] col = {"Col1","Col2","Col3","Col4","Col5","Col6"};public JTableDemo(){initPanel();this.setVisible(true);}private void initPanel() {this.setLayout(new BorderLayout());tableModel = new DefaultTableModel();tableModel.setColumnIdentifiers(col);rowItem = new Vector();for(int i = 0;i<col.length; i++){rowItem.add("aaa");}for(int i=0; i<10; i++){tableModel.addRow(rowItem);}table = new JTable(tableModel);table.setRowHeight(30);table.setDefaultRenderer(Object.class, new MyTableCellRenderer());table.setIntercellSpacing(new Dimension(0,0));this.add(table.getTableHeader(),BorderLayout.NORTH);this.add(table, BorderLayout.CENTER);}public static void main(String [] args){JFrame f = new JFrame("JTableDemo");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(800, 600);f.add(new JTableDemo());//f.pack();f.setVisible(true);}}
重写的渲染器代码:
import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import javax.swing.JComponent;import javax.swing.JTable;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.JTableHeader;public class MyTableCellRenderer extends DefaultTableCellRenderer {@Overridepublic Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) {// TODO Auto-generated method stubJComponent c = (JComponent) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);JTableHeader head = table.getTableHeader();if(head!=null){head.setBackground(Color.gray);head.setForeground(Color.white);head.setPreferredSize(new Dimension(300,40));}if(column%2==1){if(row%2==1){c.setBackground(Color.LIGHT_GRAY);}else{c.setBackground(Color.DARK_GRAY);}}else{if(row%2==0){c.setBackground(Color.LIGHT_GRAY);}else{c.setBackground(Color.DARK_GRAY);}}return this;}}
页:
[1]