修改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();
    }
}

 

相关文章推荐

设置java中JTable单元格指定文字颜色

今天发现,将需要显示在toolTipText中的文本前加上,那么就可以使用html标记显示toolTipText中的文本了,那么就可以自定义显示某几个文字的颜色以及字体了。 按这个思路我试了一下在JT...
  • jhgy2
  • jhgy2
  • 2015年01月01日 12:02
  • 1332

Swing —— JTable鼠标移入更换单元格颜色

效果图: 相关代码 public class MouseHoverTable extends JFrame { Color color = new Color(232, 232, 232)...

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

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

JTable获得修改后单元格的值

问题还原,如图:更新前: 现在要把666改成1,点击更新后,你会发现更新后单元格还处于编辑状态,或者TableModel.getValueAt(0,1)获取的还是原来的值“666”。我们现在是想...

JTable 为单元格添加按钮效果和事件效果

一、添加按钮显示效果 在JTable中,单元格的数据默认是Label的效果,也没有事件。 如果要为单元格添加一个按钮显示效果的话,那么就需要使用到一个swing的接口:javax.swing.ta...

Jtable单元格合并的问题

table网格单元格合并

JTable 为单元格添加按钮效果和事件效果

一、添加按钮显示效果 在JTable中,单元格的数据默认是Label的效果,也没有事件。 如果要为单元格添加一个按钮显示效果的话,那么就需要使用到一个swing的接口:javax.swing.ta...

Swing之JTable篇在表单元格中增加文本输入框

在JTable单元个中增加文本输入框是经常遇到的,一般在开发中会遇到在表格中对输入做控制就可以用到这种方法来实现 实现方式: 重写:TableCellRenderer接口 Componen...
  • SJF0115
  • SJF0115
  • 2011年11月19日 19:46
  • 1960

swing jTable 自定义单元格

jTable 单元格 自定义 颜色 图片

JAVA-SWT如何在Jtable单元格中加入复选框Jcheckbox,Jbutton,JcomboBox

项目用到一个需求就是在Jtable单元格中加复选框Jcheckbox或者Jbutton,在网上终于找到了解决的办法。可惜,加两个Jbutton的问题还没有解决。 先记下如何在如何在Jtable单元格中...
  • yaerfeng
  • yaerfeng
  • 2012年02月13日 15:56
  • 14657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:修改JTable中任意单元格颜色
举报原因:
原因补充:

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