修改JTable中任意单元格颜色

原创 2007年09月19日 21:30:00

修改JTable中任意单元格颜色

从网上找了一个隔行变色的JTABLE例子,修改了一下。确切的说是使得某一或某些单元格颜色保持不变,

而改其他单元格的颜色。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;


public class RoundColorTable extends JFrame {
    private String[] colname = {"第1列","第2列","第3列","第4列","第5列"}; //表头信息
    private String[][] data = new String[10][5]; //表内容
    
    //界面组件----------------------//
    private JScrollPane scroPanel = new JScrollPane(); //中底层滚动面板
    private DefaultTableModel model; //列表默认TableModel
    private JTable table;
     int r=0,c=1;//      用于控制变色区域

/**
 * 构造方法 SelectionDemo()
 */    
    public RoundColorTable() {
        makeFace();
        addListener();
        showFace();
    }

 

/**
 * 方法: 界面构建 makeFace()
 */
    private void makeFace() {
        
        //表内容数组 data[][] 赋值------------//
        for(int i = 0; i < 10; i++) {
            for(int j = 0; j < 5; j++) {
                data[i][j] = "( " + (j+1) + ", " + (i+1) + " )";
            }
        }
        
        table = new JTable(model = new DefaultTableModel(data,colname));
        table.setEnabled(false);
        
        //新建列表现器------------------------//
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, 
                          Object value, boolean isSelected, boolean hasFocus, 
                                                     int row, int column) {
                Component   cell   =   super.getTableCellRendererComponent  
                        (table,   value,   isSelected,   hasFocus,   row,   column);
                if(row==r&&column==c&&cell.isBackgroundSet())           //设置变色的单元格
                  cell.setBackground(   Color.GRAY);  
                  return   cell;
            }
        };
        //设置列表现器------------------------//
        for(int i = 0; i < colname.length; i++) {
            table.getColumn(colname[i]).setCellRenderer(tcr);
        }
                
                
        scroPanel.getViewport().setBackground(Color.white);
        scroPanel.getViewport().add(table);
        
        //总体界面布局------------------------//
        getContentPane().add(scroPanel, BorderLayout.CENTER);
    }

 

/**
 * 方法: 界面显示 showFace()
 */
    private void showFace() {
        setSize(500,400);
        Toolkit tmpTK = Toolkit.getDefaultToolkit();
        Dimension dime = tmpTK.getScreenSize();
        
        setLocation(200,300);
        setVisible(true);
        //show();
    }

 

/**
 * 方法: 添加事件监听 addListener()
 */   
    private void addListener() {
        this.addWindowListener(new WindowAdapter(){  //添加窗口关闭事件
            public void windowClosing(WindowEvent e){
                setVisible(false);
                dispose();
                System.exit(0);
            }
        });
    }
        
        
/**
 * 程序入口 main()
 */
    public static void main(String args[]) {
        //获取设置系统风格-------------------//
        try {
            String laf = UIManager.getSystemLookAndFeelClassName();
            UIManager.setLookAndFeel(laf);
        } catch (Exception e) {}
        
        new RoundColorTable();
    }
}

 

怎么样设置JTable某个单元格的背景颜色和前景颜色

下面这个实例是设置表格的第一行第三格背景颜色为蓝色,前景颜色为红色。 package com.test.view; import java.awt.BorderLayout; import ...
  • yuqinying112
  • yuqinying112
  • 2011年12月06日 11:15
  • 8409

jTable设置单个单元格颜色

尝试Swing已经一星期,感觉Swing里的坑还是很多的,对于我这种刚入门的新手来说,接口确实有些不顺手。         闲话休提。需求是这样的,绘制一个数据表格,假如其中某个单元格的数据超出阈值,...
  • dunceiam
  • dunceiam
  • 2014年10月30日 11:56
  • 1969

JTable操作 关于单元格颜色设置

今天写一篇关于JTable有关的文章,包括:为JTable单元格设置字体颜色、为JTable单元格设置背景色、让JTable某一列设置为不可能编辑。代码很简单,请朋友们参考如下: package Ja...
  • darkhorsefly
  • darkhorsefly
  • 2011年01月10日 23:36
  • 9883

TableCellRenderer的用法(JTable单元格背景颜色设置)

  • 2013年05月20日 23:39
  • 3KB
  • 下载

jtable设置某一个单元格的颜色

  //TableCellColor.java import javax.swing.*;import java.awt.*;import javax.swing.table.*;public cla...
  • wzh32
  • wzh32
  • 2009年05月01日 10:22
  • 1706

设置JTable某个单元格的背景颜色和前景颜色

下面这个实例是设置表格的第一行第三格背景颜色为蓝色,前景颜色为红色。 package com.test.view; import java.awt.BorderLayout; import ...
  • sqzhao
  • sqzhao
  • 2014年12月13日 19:31
  • 536

修改Jtable字体颜色

今天写一篇关于JTable有关的文章,包括:为JTable单元格设置字体颜色、为JTable单元格设置背景色、让JTable某一列设置为不可能编辑。代码很简单,请朋友们参考如下: pack...
  • lianchao668
  • lianchao668
  • 2014年02月24日 12:50
  • 1924

一个牛人写的“设置jtable单元格颜色,以及jtable中实现复选框”的程序,备忘

CSDN,“fengzhou0920”的作品,很好很强大,呵呵 //TryJTable.java import java.awt.*;import java.awt.event.*;import ja...
  • wzh32
  • wzh32
  • 2009年05月01日 11:09
  • 4515

JTable设置某一特定边框的颜色小记

在制表过程当中,总有些奇怪的需求,比如这次的要让Table的某一个特定的列颜色指定。查找API后发现Table有个方法叫SetGridColor。但是这个方法是设置整体的框架颜色,不是我所要的,于是乎...
  • zhang24qin
  • zhang24qin
  • 2014年03月14日 17:09
  • 2364

JTable获得修改后单元格的值

问题还原,如图:更新前: 现在要把666改成1,点击更新后,你会发现更新后单元格还处于编辑状态,或者TableModel.getValueAt(0,1)获取的还是原来的值“666”。我们现在是想...
  • dudefu011
  • dudefu011
  • 2017年01月06日 17:41
  • 1119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:修改JTable中任意单元格颜色
举报原因:
原因补充:

(最多只允许输入30个字)