首页
学习
活动
专区
工具
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 swing中jtable是mvc形式的,所以jtable仅仅是数据的显示,而真正和数据绑定的却是TableModel这个接口,我们先看看这个接口的内部有哪些方法,这样我们心里才有个底

40010
  • 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常见用法细则 JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一....[图片] 二.对表格列的控制 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。

    5.1K10

    高级Swing 组件

    ​课程目标​ n JList高级应用 n JTree高级应用 n JTable高级应用 ​知识要点​ ​列表(List)​ 如果你想要向用户显示一组选项,而单选按钮或复选框的设置需要占用太多的空间...但是,列表框中选择的集合始终都是固定的。那么我们应该如何在列表框中添加或者删除项目呢?让人有些奇怪的是,JList类中没有任何方法可以用来实现这些操作。相反,你必须进一步了解列表组件的内部设计情况。...参数:list 要绘制其单元格的列表 item 要绘制的项目 index 项目存放在列表模型中时使用的索引 isSelected * 如果设定的单元格被选定,则返回true hasFocus 如果设定的单元格拥有该焦点...当然,表格在用户界面中是非常常见的。Swing开发小组将大量的精力用于表格控件的设计上。...当JTable需要查看某个值时,过滤器模型便计算实际的行索引,并且从模型中获取该值。

    6910

    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.6K10

    「旅游信息管理系统」 · 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

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

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

    19010

    图书管理系统代码 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 中,只有一些第三方类或者自定义类需要。

    47520

    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.4K20
    领券