具有不同颜色单元格的JTable

2023-11-19

最近在实现操作系统分页式存储管理演示程序时实现了设置JTable对象单元格不同颜色效果。在网上也有这方面的一些提问和讨论,但很多论坛内都没有很好的解释或完整的程序。因此将这段程序贴出来,供大家学习和指正。

  在本例中,每个单元格的颜色随机生成。同时,为了能够在颜色背景上显示数据,实现了一个Color类的子类MyObject。该类封装了单元格颜色和显示内容。在TableCellRenderer中可以利用该类对象设置颜色,同时又能够显示内容。

 

import java.awt.Color;
import java.awt.Component;
import javax.swing.*;
import javax.swing.table.*;
class MyObject extends Color{
   private String value;
   MyObject(int r,int g,int b,String value){
      super(r,g,b);
      this.value=value;
   }
   public Color getColor(){
      return new Color(getRed(),getGreen(),getBlue());
   }
   public String toString(){
      return value;
   }
}
class MyTableCellRenderer extends JPanel implements TableCellRenderer {
   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column){
      setBackground((Color)value);
      removeAll();
      add(new JLabel(value.toString()));
      return this;
   }
}

class MyTableModel extends AbstractTableModel {
   private Object[][] cells;
   private String[] columnNames;

   @Override
   public String getColumnName(int col) {
      return columnNames[col];
   }

   @Override
   public Class getColumnClass(int col) {
      return cells[0][col].getClass();
   }

   public int getColumnCount() {
      return cells[0].length;
   }

   public int getRowCount() {
      return cells.length;
   }

   public Object getValueAt(int row, int col) {
      return cells[row][col];
   }

   @Override
   public void setValueAt(Object obj, int row, int col) {
      cells[row][col] = obj;
   }

   public MyTableModel(int rows, int cols, String[] columnNames) {
      cells = new Object[rows][cols];
      this.columnNames = columnNames;
      for (int i = 0; i < rows; i++) {
         for (int j = 0; j < cols; j++) {
            cells[i][j] = new java.awt.Color(255, 255, 255);
         }
      }
   }
}
class ColoredTable{
   private int columnCount=10;
   private int rowCount=50;
   private MyTableModel tableModel2;
   private JTable table;
   String[] columnNames2=new String[columnCount];
   public void go(){
      JFrame f=new JFrame("具有不同颜色单元格的JTable实例");
      f.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      table=new JTable();
      for(int i=0;i<columnCount;i++)
         columnNames2[i]=""+i;
      tableModel2=new MyTableModel(rowCount,columnCount,columnNames2);
      table.setModel(tableModel2);
      table.setDefaultRenderer(java.awt.Color.class, new MyTableCellRenderer());
      table.setRowHeight(50);
      for(int i=0;i<rowCount;i++)
         for(int j=0;j<columnCount;j++){
            int r=(int)(Math.random()*255);
            int g=(int)(Math.random()*255);
            int b=(int)(Math.random()*255);
            Color color=new Color(r,g,b);
            tableModel2.setValueAt(new MyObject(r,g,b,""+i+","+j),i,j);
         }
      f.add(new JScrollPane(table));
      f.pack();
      f.setVisible(true);
   }
   public static void main(String args[]){
      new ColoredTable().go();
   }
}
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有不同颜色单元格的JTable 的相关文章

  • Java 字符串的细微差别

    class Test public static void main String s1 null null shows compile time error String s1 null String s2 s1 null runs fi
  • 如何在java hashset中查找并返回对象

    根据 HashSet javadoc HashSet contains 仅返回布尔值 如何在 hashSet 中 查找 对象并修改它 它不是原始数据类型 我看到 HashTable 有一个 get 方法 但我更喜欢使用该集合 您可以删除一个
  • 这些比较应该返回什么?

    我有一个使用 string compare string string 对某些值进行排序的应用程序 我不明白的是为什么 1022 比较小于 10 23 而 10 23 比较小于 1024 是否有特定于 值的东西导致了这个结果 string
  • 在 Java 中从字符串中提取第一个单词的最佳方法是什么?

    尝试编写一个简短的方法 以便我可以解析字符串并提取第一个单词 我一直在寻找最好的方法来做到这一点 我想我会用str split 但是我想从字符串中获取第一个单词 并将其保存在一个变量中 然后将其余的标记放入另一个变量中 有没有一种简洁的方法
  • Java 从我创建的另一个类访问数组元素

    我正在使用 main 方法在类中创建一个数组 Word attempts new Word 26 Word 类中的字段是 private String attempts Word 类中的构造函数是 public Word int a att
  • 动态添加变量名称值对到 JSON 对象

    我有一个充满 ips 的 json 对象 例如 var ips 然后我将 ip 对象添加到该对象 如下所示 ips ipID 然后我需要向每个 ip 添加动态 变量名称值对 所以我使用这样的代码 var name var value var
  • Java中String的字符编码是什么?

    我实际上对 Java 中字符串的编码感到困惑 我有一些问题 如果您知道答案 请帮助我 1 Java字符串在内存中的本机编码是什么 当我写作时String a Hello 将以哪种格式存储 由于 Java 是独立于机器的 我认为系统不会进行编
  • 关于Java中trim()方法的查询

    我之前提出了一个问题 但遭到了严厉的批评 所以我在这里再次提出 更简单 并重新措辞以吸引那些可能担心我之前提出问题的方式的人 背景 我正在解析一些 HTML 以获取信息 我将所有内容隔离在一系列行中 但我希望抓取的内容以及后面的一堆空格 为
  • 在其抽象超类中使用子类的泛型类型?

    在我的代码中有以下抽象超类 public abstract class AbstractClass
  • Ruby 中@@ 和@ 有什么区别? [复制]

    这个问题在这里已经有答案了 我刚刚开始学习 Ruby 一直无法找到关于 和 在类变量方面的区别的很好的解释 如果有人可以提供一个基本的直观示例 那就太好了 另外它们可以互换吗 前缀为的变量 是一个类变量 前缀为 是一个实例变量 在这个答案中
  • Sinatra 请求对象

    我可能在这里遗漏了一些非常明显的东西 但我似乎无法找到答案 或者自己解决它 在西纳特拉 他们有一个self get方法 捕获块 当调用块时 您可以使用request里面有变量 这怎么可能 Sinatra module Sinatra cla
  • 初始化父类时如何返回子类的新实例?

    给定一个类层次结构如下 class A def initialize param if param 1 then initialize and return instance of B else initialize and return
  • 使用 stringstreams 将字符串转换为 __uint128_t

    我正在尝试从字符串中提取不同类型的数据 void readHeader char buf BUFFSIZE std istringstream hdr buf uint128 t id client hdr gt gt id client
  • 第一个字母改为大写

    是否有其他版本可以使每个字符串的第一个字母大写 并且对于 flac perl 也使用 FALSE name lt hallo gsub alpha U 1 name perl TRUE 你可以尝试这样的事情 name lt hallo pa
  • Actionscript 对象的属性数量

    如何获取通用 Actionscript 对象中的属性数量 如数组长度 您必须循环所有元素才能对它们进行计数 function objectLength myObject Object int var cnt int 0 for var s
  • 在某些情况下,直接访问字符串的后备数组是否合理?

    我正在致力于优化文本处理软件 其中经常使用以下类 class Sentence private final char textArray private final String textString public Sentence Str
  • C# 资源文件中的 Tab 键切换

    如何向字符串资源添加制表符 t text 不起作用 您必须显式添加制表符 最简单的方法可能是在记事本中键入字符串 显式设置制表符而不是使用转义字符 并将文本复制并粘贴到资源编辑器中 对于换行符 您也会遇到类似的问题 添加换行符的最简单方法是
  • 添加到 std::vector 的中间

    有没有办法将值添加到 a 的中间vector在 C 中 假设我有 vector
  • perl生成字符串来匹配正则表达式

    我尝试找到一种方法来生成与正则表达式匹配的字符串 例如以下正则表达式 A Z 6 6 A Z2 9 A NP Z0 9 A Z0 9 3 3 0 1 我尝试过 Cpan 上的一些 perl 模块不起作用 gt 字符串 随机 gt 正则表达式
  • 不会将字符串转换为十进制 C#(输入字符串的格式不正确。)

    Visual Studio 不会将我的字符串转换为十进制 错误 输入字符串的格式不正确 Code string test 123 95 decimal test1 decimal parse test string being an int

随机推荐

  • Linux升级命令yum update

    Linux升级命令有两个分别是yum upgrade和yum update 这个两个命令是有区别的 代码如下 yum y update 升级所有包同时也升级软件和系统内核 代码如下 yum y upgrade 只升级所有包 不升级软件和系统
  • Memcach基础使用

    memcache 基础课程 使用场景 memcache 服务器端的安装 推荐使用memcached memcached是memchache的升级版本 sudo su apt get install memcached usr bin mem
  • 02-12306验证码预处理(分割、转存dat、解析dat文件)

    import cv2 as cv import numpy as np import os import binascii temp path r F python StockAnalyzer test test avi img path
  • 决策分类树算法之ID3,C4.5算法系列

    一 引言 在最开始的时候 我本来准备学习的是C4 5算法 后来发现C4 5算法的核心还是ID3算法 所以又辗转回到学习ID3算法了 因为C4 5是他的一个改进 至于是什么改进 在后面的描述中我会提到 二 ID3算法 ID3算法是一种分类决策
  • 从TCP协议的原理来谈谈rst复位攻击

    在谈RST攻击前 必须先了解TCP 如何通过三次握手建立TCP连接 四次握手怎样把全双工的连接关闭掉 滑动窗口是怎么传输数据的 TCP的flag标志位里RST在哪些情况下出现 下面我会画一些尽量简化的图来表达清楚上述几点 之后再了解下RST
  • svn软件常用命令

    下载代码 命令 svn co 代码路径 查看工程中被修改的文件的内容 命令 svn diff 查看工程中文件的状态 命令 svn status 备注 状态是 M 就是被修改过 M是modify的缩写 回退被修改的文件 命令 svn reve
  • 2020中科院sci分区查询_查询SCI分区有几种方法

    查询SCI分区有几种方法 SCI分区目前有两种方法和标准 一个是中科院分区 一个是JCR分区 SCI期刊的分区有着重要意义 SCI期刊的影响因子都是浮动变化的 如果以一个影响因子的固定值来区分期刊是不合理的 不同领域内的期刊影响因子也没有可
  • Java单链表反转 详细过程

    https blog csdn net guyuealian article details 51119499 一 单链表的结点结构 data域 存储数据元素信息的域称为数据域 next域 存储直接后继位置的域称为指针域 它是存放结点的直接
  • Microsoft Dynamics CRM 安装注意事项(请朋友们补充)

    最近安装Microsoft Dynamics CRM 遇到的了很多烦人的小问题 特此记录下需要注意事项 仅供参考 服务器 Windows Server 2012 R2 Datacenter 安装及顺序 IIS gt SQLServer gt
  • 高质量、高并发的实时通信架构设计与探索

    中国互联网络信息中心 CNNIC 近日发布的第 47 次 中国互联网络发展状况统计报告 显示 截至 2020 年 12 月 我国网民规模达 9 89 亿 随着社会信息化水平持续提升及电子设备加速普及 手机网民规模持续增长 基本实现对全体网民
  • D - Robots Easy (脑残题)

    D Robots Easyhttps vjudge csgrandeur cn problem Gym 102267D 题意 对于给出的 12 12 的图 有 l 组查询 每组给出一个坐标 要求从这个坐标开始行走 遇到黑色或在边界不能走 直
  • AGPBI: {“kind“:“error“,“text“:“Program type already present: android.support.v4.os.ResultReceiver$1“

    使用环境 遇见 解决方法 第一步 object下的build gradle文件中build gradle版本号修改 第二步 object下的Gradle版本号修改 具体对应版本 没有一个固定的对应关系 取决于创建项目时创建者当时的AS环境
  • cpp: Observer Pattern

    Gold h 此文件包含 Gold 类 Observer Pattern 观察者模式 C 14 Jewelry Observer Pattern 观察者模式 2023年5月10日 涂聚文 Geovin Du Visual Studio 20
  • 数据结构 严薇敏 顺序表的实现(增 删 改)及其使用方法详解

    时间复杂度 数据结构 时间复杂度和空间复杂度 目录 1 线性表 2 顺序表 2 1概念及结构 2 2 接口实现 SeqList h SeqList c 2 2 1初始化链表以及销毁链表的实现 初始化顺序表 销毁顺序表 2 2 2查找元素前驱
  • 如何使用FolderSync在Android和PC之间同步文件

    On the desktop apps like Dropbox and Google Drive sync folders between your devices But on your phone it only gives you
  • Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

    Windows下Java Tesseract OCR对图像进行字符识别 亲测可行 1 下载tesseract ocr 中文语言包并安装 2 命令行对图片进行识别及效果图 3 Java调用Tesseart OCR 3 1 效果图 3 2 源码
  • SlideLive:免费的PPT模板网站

    简介 在平时的学习和工作中 我们经常需要使用到PPT模板 包括课程报告 团体活动等 本文给大家介绍一款免费的PPT模板的网站 SlideLive 官网地址 https www slidelive cn SlideLive
  • 完美解决Echarts X坐标轴下方文字最后一个字体加粗颜色加深的问题

    之前用Echarts画图的时候 X坐标轴最后一个字存在自动加粗的问题 也是在网上找过解决办法没有找到 后面自己研究明白了后 在某篇文章下评论了如何解决 但是好像大家没有看评论的习惯 所以单独拿出来一篇文章 希望能给大家解决下问题 下面是有问
  • Mysql基础篇笔记-第09章_子查询

    仅作个人笔记使用 本篇的学习来源是 尚硅谷Mysql基础教程 宋红康 教学视频来自B站 MySQL数据库教程天花板 mysql安装到mysql高级 强 硬 感谢老师的教学 第09章 子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询
  • 具有不同颜色单元格的JTable

    最近在实现操作系统分页式存储管理演示程序时实现了设置JTable对象单元格不同颜色效果 在网上也有这方面的一些提问和讨论 但很多论坛内都没有很好的解释或完整的程序 因此将这段程序贴出来 供大家学习和指正 在本例中 每个单元格的颜色随机生成