首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Java Swing中设置JTable单元格的两种背景色

在Java Swing中设置JTable单元格的两种背景色有以下两种方法:

方法一:使用DefaultTableCellRenderer类

  1. 创建一个继承自DefaultTableCellRenderer的自定义渲染器类,例如MyTableCellRenderer。
  2. 在自定义渲染器类中重写getTableCellRendererComponent方法,根据需要设置单元格的背景色。
  3. 在主程序中,通过调用JTable的setDefaultRenderer方法,将自定义渲染器类应用到指定的列或整个表格。

示例代码如下:

代码语言:txt
复制
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;

public class MyTableCellRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        
        // 设置奇数行的背景色为灰色
        if (row % 2 == 1) {
            component.setBackground(Color.LIGHT_GRAY);
        } else {
            component.setBackground(Color.WHITE);
        }
        
        return component;
    }
}

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JTable table = new JTable(10, 5);
        
        // 应用自定义渲染器类到第一列
        table.setDefaultRenderer(Object.class, new MyTableCellRenderer());
        
        frame.add(new JScrollPane(table));
        frame.pack();
        frame.setVisible(true);
    }
}

方法二:使用TableCellRenderer接口

  1. 创建一个实现了TableCellRenderer接口的自定义渲染器类,例如MyTableCellRenderer。
  2. 在自定义渲染器类中实现getTableCellRendererComponent方法,根据需要设置单元格的背景色。
  3. 在主程序中,通过调用JTable的getColumnModel方法获取TableColumnModel对象,然后调用TableColumnModel的getColumn方法获取指定列的TableColumn对象,最后调用TableColumn的setCellRenderer方法将自定义渲染器类应用到指定的列。

示例代码如下:

代码语言:txt
复制
import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

public class MyTableCellRenderer implements TableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        Component component = new DefaultTableCellRenderer().getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        
        // 设置奇数行的背景色为灰色
        if (row % 2 == 1) {
            component.setBackground(Color.LIGHT_GRAY);
        } else {
            component.setBackground(Color.WHITE);
        }
        
        return component;
    }
}

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JTable table = new JTable(10, 5);
        
        // 应用自定义渲染器类到第一列
        table.getColumnModel().getColumn(0).setCellRenderer(new MyTableCellRenderer());
        
        frame.add(new JScrollPane(table));
        frame.pack();
        frame.setVisible(true);
    }
}

以上两种方法都可以实现在Java Swing中设置JTable单元格的两种背景色。其中,方法一使用了DefaultTableCellRenderer类,方法二使用了TableCellRenderer接口。根据实际需求选择合适的方法进行使用。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java swing项目桌面软件还是蛮香,至少有了我自己桌面软件|Java 开发实战

今天看了看自己java swing程序,感觉写还不错,但是发现现在遇到一个瓶颈问题,就是jtable使用,由于一开始概念不理解现在jtable得重新写,之前我吧数据放在jtable上了,但是真正开发...java swing数据都是放在TableModel上。...但是JTable如果想让表头显示仅仅将JTable加入Jpanel或者Jframe是不行,我这里提供两种方式实现1、分别将TableHeader和TableColumn加入控件单独显示,这种情况不常见...2、先将JTable加入jscrollpane(滚动条),然后在将滚动条加入到对应控件(Jpanel或者是Jframe).java swing 开发中加入滚动条是很常见操作,所以这种方式加入表格还是很推荐...JTable数据显示java swingjtable是mvc形式,所以jtable仅仅是数据显示,而真正和数据绑定却是TableModel这个接口,我们先看看这个接口内部有哪些方法,这样我们心里才有个底

27410
  • java swing 添加 jcheckbox复选框

    值得一提是在这七个构造方法,设计器(如果您使用了MyEclipse)使用JTable(TableModel dm)这个版本。...而一般情况使用JTable(Vector rowData,Vector columnNames)       在Java方法,如果参数需要传递接口,可以在调用方法时传递一个(匿名)对象,该对象是一个不具名实例...new ……()是构造方法,调用来构造一个匿名对象,其后{}不是Java特殊语法,但是Java可以将方法定义在里面(这里方法生命周期与匿名对象相 同),当然,此处是用于实现接口方法。...其次是表格样式,表格将数据和如何显示数据(比如列数量、列名称、是否可编辑)保存在其数据模版,该模版实现自接口TableModel。   最后,表格(每一个单元格)可以设置渲染效果。...javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object

    3.3K00

    JTable常见用法细则+设置某列可编辑+滚动表格

    JTable常见用法细则 JTableSwing编程很常用控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一....[图片] 二.对表格列控制 1) 设置列不可随容器组件大小变化自动调整宽度. table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 2) 限制某列宽度...注:数据是Member类型链表,Member类如下: [图片] 填充数据代码: [图片] 2) 取得表格数据 [图片] 五.取得用户所选行 1) 取得用户所选单行 [图片]...2) 取得用户所选多行 [图片] 六.添加表格事件处理 [图片] 例子: import java.awt.BorderLayout; import java.awt.Dimension;...import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.Icon; import javax.swing.ImageIcon

    3.1K00

    Java Swing JTable

    1 简介 JTable用于显示和编辑常规二维单元格表。有关面向任务文档和使用JTable示例,请参见Java教程的如何使用表。...要启用行排序和过滤,请使用RowSorter。您可以通过以下两种方式之一设置行排序器: 直接设置RowSorter。...使用专门渲染器和编辑器。 JTable仅使用整数来引用它显示模型行和列。 JTable只是采用表格形式单元格范围,并在绘制过程中使用getValueAt(int,int)从模型检索值。...添加表格到容器中有两种方式: 添加到普通中间容器,此时添加jTable只是表格行内容,表头(jTable.getTableHeader())需要额外单独添加。...*/ public Class getColumnClass(int columnIndex); 判断指定单元格是否可编辑 如果行和列单元格是可编辑,则返回true。

    5K10

    java winform开发之JTable全攻略

    列表在任何一门开发语言中都占有非常重要地位,在.Net中有GridView,在extjs中有GridPanel。。。,而在java Swing,它名字叫JTable。...行添加标识,行id等;4)怎样在JTable动态添加新行;     1)JTable基本用法: 我用IDE是NetBeans,由于也是简单做几个页面的客户端,主要还是Web开发,所以暂时不打算深究...2)怎样添加行点击事件 首先,在JTable设计视图中先选中JTable,然后右击,在事件弹出菜单依次选中"mouse-click”就可以捕捉表格点击事件了,在这个事件监听方法,会传入一个java.awt.event.MouseEvent...添加行标识 我们知道,JTable每一个单元格,要求值类型是一个Object实例,也就是说,只要是一个对象就可以了,这个机制,给了我们非常大发挥空间,我们可以在一个单元格存放任意类型对象,...只要在这个对象重写一下toString()方法,将我们希望在单元格显示内容return出来就可以了,只JTable本身,并没有提供设置行id等识别表格行对象方法,所以我想到了自己定义一个单元格对象

    1.2K30

    java swing一篇轻松学习(高考后可以自学)

    setDefaultLookAndFeelDecorated (boolean defaultLookAndFeelDecorated) 设置 JFrame 窗口使用 Windows 外观(边框、...setFont(Font f) 设置容器字体 void setLayout(LayoutManager mgr) 设置容器布局管理器 void setBackground(Color c) 设置组件背景色...表格JTable 绑定jdbc数据就能做具体操作了 方法名称 说明 getColumnCount() 返回列模型列数 getColumnN ame(int column) 返回出现在视图中 column...列位置处列名称 getRowCount() 返回 JTable 可以显示行数(给定无限空间) getRowSorter() 返回负责排序对象 getSelectedColumn() 返回第一个选定列索引...和 column 位置单元格值 isEditing() 如果正在编辑单元格,则返回 true selectAll() 选择表所有行、列和单元格 setColumnSelectionInterval

    9.4K10

    Java一分钟之-Swing组件:JTable, JTree, JTextArea

    Java Swing 提供了丰富组件库,其中JTable、JTree和JTextArea用于展示数据和用户输入。本文将深入浅出地介绍这些组件,常见问题,易错点以及如何避免,同时提供代码示例。 1....JTable JTable用于展示二维数据,如表格形式数据。它可以从数组、列表或模型获取数据。...避免方法:使用JScrollPane包裹JTable。 2. JTree JTree用于展示层次结构数据,文件系统或组织结构。...避免方法:在创建JTextArea时设置初始文本。 结语 JTable、JTree和JTextArea是Swing展示和处理数据重要组件。...理解它们用法,注意常见设计模式和错误,可以帮助你创建出功能丰富用户界面。在实践,结合不同布局管理器和组件,你可以构建出各种复杂界面。

    16110

    「旅游信息管理系统」 · Java Swing + MySQL 开发「建议收藏」

    ; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ScrollPaneConstants;...jTable=new JTable(dt);//创建表格 jTable.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式...getContentPane().add(jsp); //设置单元格内容居中显示 DefaultTableCellRenderer r = new DefaultTableCellRenderer...修改:点击游客将会将游客编号绑定到文本框,可以对该游客编号对应游客进行团号和性别修改。删除:点击要删除信息,点击删除即可。添加:对报名信息进行添加。...); //设置单元格内容居中显示 DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment

    2.8K20

    图书管理系统代码 4SearchFrame (…

    javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.Border...BorderLayout.NORTH); this.add(centerPanel,BorderLayout.CENTER); this.add(southPanel,BorderLayout.SOUTH); // 设置各面板布局...将单选按钮添加到面板 northPanel2.add(Radio_number); northPanel2.add(Radio_name); northPanel2.add(Radio_author); //设置按钮组边框...int m = Integer.parseInt(textField.getText()); book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框输入文字出现在某个对象执行以下操作...Radio_author.isSelected()){ int m=0; do{ if(m<=n){ book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框输入文字出现在某个对象执行以下操作

    1.2K20

    Java JDK 环境搭建

    关于 CLASSPATH 变量 path 作用:path 是系统用来指定可执行文件完整路径,即使不在 path 设置 JDK 路径也可执行 Java 文件,但必须把完整路径写出来, C:\Program...设置了 JDK 安装目录后就不用再把 java 文件完整路径写出来了,它会自动去 path 设置路径中去找; CLASSPATH 作用:classpath 是指定你在程序中所使用类(.class...)(.jar)文件所在位置,就如在引入一个类时:import javax.swing.JTable 这句话是告诉编译器要引入 javax.swing 这个包下 JTable 类,而 classpath...和 C:\Program Files\Java\jdk\lib 去找 javax.swing.JTable 这个类。...rt.jar 和 tool.jar 这两种属于 java 平台自身包就不需要添加到 CLASSPATH ,只有一些第三方类或者自定义类需要。

    46120

    java超市仓库管理系统(超市条形码管理系统)

    MyEclipse 9.0及以上版本,MySql 5.6及以上版本 二、要求 利用SWING编程实现商品管理,要求如下: 1、商品管理页面布局,添加一个JScrollPanel(内嵌JTable),...图1 2、在“商品名称”对应JTextField输入商品名称,单击“查询”:如果存在该商品,则显示如图2所示窗体;若输入名称不存在,则弹出“没找到该商品!”对话框。...对象名.setLocation(int x,int y) 或 对象名.setBounds(int x,int y,int Width,int Height) 注意:在使用自由布局方式布局JPanel控件时...,必须设置其大小,当然JPanel对象亦然,否则很有可能不能正常显示。...,请将【GoodsXG.Java】文件变量num改为price。

    3.5K20

    值得练手JavaGUI项目——色彩调节器实现【附完整源码】

    可以自行调节色彩并且获取到对应红绿蓝三种色号。 先来看一波效果图: ? 其实调色器基本设计思路非常简单: 利用Java窗体,设置红。绿。...= new JPanel(new GridLayout(3,1)); add(jp_color); 在第一个面板设置红、绿、蓝三种颜色滑块: //设置颜色提示标签 JLabel radtext =...//设置颜色显示区域 colorLB = new JTable(); colorLB.setBackground(Color.red); add(colorLB); 现在调色器控件基本上都设置已经完成了...; import javax.swing.JSlider; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.event.AncestorListener...{ //将控件设置为公有权限 public JSlider js_red,js_green,js_blue; //定义滑块控件 public JTable colorLB; //定义颜色显示标签 public

    2.3K20

    【面向对象设计模式】 适配器模式 (二)

    ; 数据不确定性 : JavaSwing 提供了JTable控件用以显示列表, JTable不知道我们要显示什么数据;  适配器 : 将数据交给JTable控件并显示出来, 需要一个适配器, 这些数据要经过一个适配器接口...; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import javax.swing.JFrame...; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; public class...识别适配器 MouseAdapter 为 MouseListener 接口提供桩实现; 在使用MouseAdapter时候, 就相当于使用了适配器 : 用户操作鼠标的时候, 将swing组件接收到鼠标操作适配给相应动作处理类...接口, JTable组件将客户端需要表信息存储到自身, 通过自定义适配器对象, 将任何数据适配到表; JTable不适用类适配原因 :  继承数量限制 : JTable适配器需要继承 AbstractTableModel

    31810

    1小时学会通过Java Swing Design设计java图形化

    环境与工具: 系统环境:win10 开发工具:Eclipse IDE for Java Developers - 2020-09 数据库:MySQL5.6 学习目标: 一般大一结束时候需要做一个类似一下内容...---- 1、项目创建 使用eclipse直接创建一个java空项目即可,唯一要注意就是创建【java时候不是点击【class】而是创建【JFrame】,通过【JFrame】才能使用设计工具【Design...这里点【other】因为【JFrame】在这个选项栏。...表格 画有些乱,但是基本上一眼就能看出来是啥:  表格JTable: JPanel设置上下布局,JScrollPane设置,这样才能显示table标题列 添加一些测试数据: 效果: 5、...javax.swing.JScrollPane; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JTable

    1K10
    领券