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

Java Swing JTable 表格【9:表格使用渲染器DefaultTableCellRenderer】

2016-01-11 22:04 756 查看

渲染器

渲染器用来绘制表格中的单元格,渲染器也可以从表格中提取每个单元格的方法,所以,渲染器也被称为绘制器,其实,当一个表格能够在容器中显示出来,是依靠系统默认的渲染器来绘制的,而且是一个单元格,一个单元格绘制的,所以哥它可以单独的将某个单元格提取出来,也可以针对表格中任意的单元格进行编辑,这也是渲染器的最大用处之一。

下面通过例子来演示渲染器来渲染表格中不同行的颜色。

package com.acconsys.swing.chapter14;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

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

/**
* 展示使用渲染器让表格中偶数行的颜色为蓝色,奇数行不变
*
* @author Administrator
*
*/
public class Test11 extends JFrame {

Object[][] p = { { "王鹏", "91", "100", "191" },
{ "朱学莲", "82", "100", "182" }, { "梅婷", "47", "100", "147" },
{ "赵龙", "61", "100", "161" }, { "李兵", "90", "100", "190" }, };
String[] n = { "姓名", "语文", "数学", "总分" };

// 界面组件----------------
// 中底层滚动面板
private JScrollPane scroPanel = new JScrollPane();
// 列表默认TableModel
private DefaultTableModel model;
private JTable table;

public Test11() {
config();
addListener();
confcolor();
}

/**
* 方法:界面构建
*/
private void config() {
table = new JTable(model = new DefaultTableModel(p, n));
DefaultTableCellRenderer ter = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {

// 设置偶数行颜色
if (row % 2 == 0) {
setBackground(Color.white);
}
// 设置奇数行颜色
else if (row % 2 == 1) {
setBackground(new Color(206, 231, 255));
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
};
for (int i = 0; i <= 3; i++) {
table.getColumn(n[i]).setCellRenderer(ter);
}
scroPanel.getViewport().setBackground(Color.WHITE);
scroPanel.getViewport().add(table);
// 总体界面布局----------------------
getContentPane().add(scroPanel, BorderLayout.CENTER);

}

/**
* 方法:界面显示
*/
private void confcolor() {
setTitle("编辑器的测试");
setSize(500, 400);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
Dimension frameSize = this.getPreferredSize();
setLocation(screenSize.width / 2 - (frameSize.width) / 2,
screenSize.height / 2 - (frameSize.height / 2));
setResizable(false);
setVisible(true);

}

/**
* 添加事件监听addListener()
*/
private void addListener() {
this.addWindowListener(new WindowAdapter() {
// 添加窗口关闭事件
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

}

/**
* 程序入口main()
*
* @param args
*/
public static void main(String[] args) {
new Test11();
}

}


运行结果如图:



JTable的API并没有提供更改表格行或列的颜色的能力,表格的表头和内容呈现的形式都是由相应的Renderer(渲染器)来控制的,所以,只需要继承单元格默认的Renderer并作相应的修改就可以达到目的,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jtable swing