Swing之JTable篇设置表格选中行的前景色和背景色

               

本身JTable没有方法可以直接设置选择行的前景色和背景色,但是我们可以通过从写TableCellRenderer这个接口来实现我们需要的功能。此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法。

我们通过重写
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
          返回用于绘制单元格的组件。
table - 要求渲染器绘制的 JTable;可以为 null
value - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串 "true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值
isSelected - 如果使用选中样式的突出显示来呈现该单元格,则为 true;否则为 false
hasFocus - 如果为 true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑
row - 要绘制的单元格的行索引。绘制头时,row 值是 -1
column - 要绘制的单元格的列索引

来实现。

import java.awt.BorderLayout;   import java.awt.Color;   import java.awt.Component;     import javax.swing.JFrame;   import javax.swing.JScrollPane;   import javax.swing.JTable;   import javax.swing.table.DefaultTableCellRenderer;   import javax.swing.table.TableCellRenderer;     class EvenOddRenderer implements TableCellRenderer {       public static final DefaultTableCellRenderer DEFAULT_RENDERER =       new DefaultTableCellRenderer();       public Component getTableCellRendererComponent(JTable table, Object value,         boolean isSelected, boolean hasFocus, int row, int column) {       Component renderer =         DEFAULT_RENDERER.getTableCellRendererComponent(table, value,         isSelected, hasFocus, row, column);       Color foreground, background;       if (isSelected) {         foreground = Color.YELLOW;         background = Color.GREEN;       }  else {         if (row % 2 == 0) {           foreground = Color.BLUE;           background = Color.WHITE;         }  else {           foreground = Color.WHITE;           background = Color.BLUE;         }       }       renderer.setForeground(foreground);       renderer.setBackground(background);       return renderer;     }   }   public class ResizeTable {     public static void main(String args[]) {         final Object rowData[][] = {            { "1", "one""I" },           { "2", "two""II" },           { "3", "three", "III" }};       final String columnNames[] = { "#", "English", "Roman" };         final JTable table = new JTable(rowData, columnNames);       JScrollPane scrollPane = new JScrollPane(table);         table.setDefaultRenderer(Object.class,new EvenOddRenderer());                  JFrame frame = new JFrame("Resizing Table");       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         frame.add(scrollPane, BorderLayout.CENTER);         frame.setSize(300, 150);       frame.setVisible(true);       }   }  


 

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

蒋光明123

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值