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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树