具有不同颜色单元格的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 的相关文章

  • 从字符串中删除特定字符[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何从字符串中删除特定字符 我有一个 Arraylist 测试数组 String line testingarray get index
  • 用 ruby​​ 中的数组内容替换字符串?

    String Test string Test array link1 link2 如何替换这样的字符串 输出应该是String link1 string link2 字符串 gsub 可以返回一个枚举器 所以这很简单 string gsu
  • 展开字符串中的环境变量

    是否有一些 java 实用程序 可以扩展 和 env 字符串中的变量 就像 bin MY PATH gt home john bin dev null 谢谢 基本上 您想要使用环境变量进行字符串插值并扩展主目录 我不知道执行后者的简单方法
  • 是否可以基于正则表达式模式生成示例字符串?

    在我的应用程序中 用户可以在文本框中输入他自己的正则表达式模式 以便他可以强制另一个用户 文本框进行特定输入 用户是否可以看到与他输入的正则表达式匹配的字符串示例 例如 如果他要输入 A Z 2 它会生成一个像 XX 向用户表明他只能输入两
  • 我如何使用 cout << myclass

    myclass是我写的一个C 类 当我写的时候 myclass x cout lt lt x 我该如何输出10 or 20 2 就像一个integer or a float value 通常通过重载operator lt lt 对于你的班级
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的
  • python 2.7.5 中的 str() 与 repr() 函数[重复]

    这个问题在这里已经有答案了 有什么区别str and repr python 2 7 5 中的函数 python org 上的说明 The str 函数的目的是返回值的表示 这些值是相当的人类可读的 while repr 是为了生成 表示可
  • 拆箱未知类型

    当类型本身未知时 我试图找出支持将整数类型 short int long 拆箱为其内在类型的语法 这是一个完全人为设计的示例 演示了这个概念 Just a simple container that returns values as ob
  • 如何将整数日期转换为格式化日期字符串(即 2012009 到 2/01/2009)

    有任何想法吗 我想不出任何办法 我有一个从 csv 文件加载的日期列表 它们被保存为所有整数 或者更确切地说是一串整数 即 2009 年 1 月 1 日 1012009 关于如何将 1012009 变成 1 01 2009 有什么想法吗 T
  • DHT22传感器导入Adafruit_DHT错误

    因此 我已将 DHT22 湿度传感器正确连接到我的 BeagleBone Black Rev C 我在 MacBook Pro 上运行 OS Mavericks 并且按照 Adafruit 提供的有关如何使用 DHT22 的说明进行操作 我
  • 获取ERLANG中的最长公共子序列

    我是这个 ERLANG 的新手 我了解基础知识 这就像计划 但范围更广 我知道如何创建一个函数 但在创建一个获取最长公共子序列的函数时遇到问题 lcs str1 str2 是一个接受两个字符串并输出一个整数的函数 lcs algorithm
  • C++:初始化静态字符串成员

    我在 C 中初始化静态字符串成员时遇到一些问题 我有几个类 每个类都包含几个表示 id 的静态字符串成员 当我通过调用静态函数初始化变量时 一切都很好 但是 当我想为一个变量分配另一个变量的值时 它仍然保留空字符串 这段代码有什么问题 st
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 如何只获取父类对象的属性

    我有两节课 class Parent object def init self id name self id id self name name self parent vars id name make a copy def print
  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任

随机推荐

  • 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对象单元格不同颜色效果 在网上也有这方面的一些提问和讨论 但很多论坛内都没有很好的解释或完整的程序 因此将这段程序贴出来 供大家学习和指正 在本例中 每个单元格的颜色随机生成