当前位置: 首页 > news >正文

java 单元格颜色_java – Swing – 根据单元格的值设置单元格的颜色

我想根据单元格的值设置单元格的颜色.谷歌搜索了一下我发现我可以使用这样的东西:

public class TableCellRenderer extends DefaultTableCellRenderer {

@Override

public Component getTableCellRendererComponent(

JTable table, Object value,

boolean isSelected, boolean hasFocus,

int row, int col)

{

// get the DefaultCellRenderer to give you the basic component

Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);

// apply your rules

if (value.toString().equals("Red"))

c.setBackground(Color.RED);

else

c.setBackground(Color.GRAY);

return c;

}

}

我遇到的问题是我想要修改的代码已经为JTable的列设置了TableCellRendererer.代码中有一个函数如下所示:

private void configureTableColumns() {

Enumeration columns = this.table.getColumnModel().getColumns();

while (columns.hasMoreElements()) {

TableColumn tableColumn = (TableColumn) columns.nextElement();

this.setCellRenderer(tableColumn);

TableCellRenderer renderer = tableColumn.getCellRenderer();

if (renderer == null) {

renderer = this.table.getDefaultRenderer(Object.class);

}

tableColumn.setCellRenderer(renderer);

this.setCellEditor(tableColumn);

}

}

使用上面的代码,我还需要添加前面显示的TableCellRenderer类吗?我想要做的就是检查单元格的值是否为“ABC”并将背景设置为RED.

更新:

我确实尝试将我的TableCellRenderer版本添加为我想修改的代码中的内部类,但是我得到一个错误,即tableColumn.getCellRenderer()中存在类型不匹配.

Type mismatch: cannot convert from TableCellRenderer to MyTableExample.TableCellRenderer

谢谢

解决方法:

覆盖prepareRenderer方法来执行此操作.

例:

public Component prepareRenderer (TableCellRenderer renderer, int rowIndex, int columnIndex){

Component componenet = super.prepareRenderer(renderer, rowIndex, columnIndex);

if(getValueAt(rowIndex, columnIndex).toString().equals("Red")) {

componenet.setBackground(Color.RED);

} else if(getValueAt(rowIndex, columnIndex).toString().equals("Green")) {

componenet.setBackground(Color.GREEN);

}

return componenet;

}

更新:

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import javax.swing.JComponent;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableCellRenderer;

public class PrepareRendereEx {

public static void main(String[] args) {

JFrame frame = new JFrame();

frame.setSize(new Dimension(400, 100));

Object data[][] = { {"java", "j2ee"},

{"java", "j2ee"},

{"java", "j2ee"}

};

Object[] columnNames = {"Java", "J2EE"};

DefaultTableModel model = new DefaultTableModel(data, columnNames);

JTable table = new JTable(model) {

@Override

public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,

int columnIndex) {

JComponent component = (JComponent) super.prepareRenderer(renderer, rowIndex, columnIndex);

if(getValueAt(rowIndex, 0).toString().equalsIgnoreCase("java") && columnIndex == 0) {

component.setBackground(Color.RED);

} else if(getValueAt(rowIndex, 1).toString().equalsIgnoreCase("j2ee") && columnIndex == 1){

component.setBackground(Color.GREEN);

}

return component;

}

};

frame.add(new JScrollPane(table));

frame.setVisible(true);

}

}

OUTPUT:

标签:java,swing,jtable,tablecellrenderer

来源: https://codeday.me/bug/20191008/1871700.html

相关文章:

  • 集成产品开发(IPD)理论学习心得(3):产品开发管理的时代变迁
  • java按照灰度值切割_新手学,java使用分水岭算法进行图像切割(一)
  • 如何将数据导入到 SQL Server Compact Edition 数据库中(四)
  • Java很大的数字怎么存储_Java中数据是如何存储
  • hibernate3.2.6终于修复一个bug
  • java怎么连接链表_Java中的链表是否有快速连接方法?
  • Windows 窗体控件的布局
  • javax.xml.transform.TransformerFactoryConfigurationError
  • java里面分页_javaWeb中的分页操作
  • C#WinForm多线程处理相关文章
  • gb28181协议java_gb28181开发源码
  • JAVA退出整个项目的写法_Java学习之关闭流的几种写法--2015-03-02
  • 3D基本概念答疑(1)
  • java集合框架list案例_Java基础之集合框架(Collection接口和List接口)
  • 线程处理对象和功能
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 10个确保微服务与容器安全的最佳实践
  • canvas 绘制双线技巧
  • JavaScript类型识别
  • JavaScript中的对象个人分享
  • Nodejs和JavaWeb协助开发
  • vue-router 实现分析
  • 程序员该如何有效的找工作?
  • 番外篇1:在Windows环境下安装JDK
  • 观察者模式实现非直接耦合
  • 译米田引理
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​flutter 代码混淆
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (5)STL算法之复制
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .htaccess配置重写url引擎
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 8.0 发布到 IIS
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Micro Framework初体验(二)
  • .NET是什么
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @KafkaListener注解详解(一)| 常用参数详解
  • @WebServiceClient注解,wsdlLocation 可配置
  • @在php中起什么作用?
  • [1525]字符统计2 (哈希)SDUT
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [c++] C++多态(虚函数和虚继承)
  • [CSS]文字旁边的竖线以及布局知识
  • [C语言]——柔性数组