修改Jtable字体颜色

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


package Java;   


import javax.swing.JFrame;   

import javax.swing.JTable;   

import javax.swing.JPanel;   

import javax.swing.JScrollPane;   

import java.awt.BorderLayout;   

import javax.swing.JComboBox;   

import javax.swing.table.TableColumn;   

import javax.swing.DefaultCellEditor;   


import javax.swing.table.DefaultTableCellRenderer;   

import java.awt.Color;   

import javax.swing.table.DefaultTableModel;   

  

/**  

* 设置单元格为不可编辑状态   

*/  

public class JTableFrame_4 extends JFrame {   

 

private JPanel panel;   

private JTable table; //定义个二维数据表格   

private JScrollPane scrollPane; //定义带有滚动条的面板   

 private DefaultTableModel dtm; //定义表格模型,该模型可以存放数据          

 

//初始化数据   

    Object[][] rowData = {   

        {"1001", "李汉", "软件部", new Double(3000)},   

        {"1002", "朱泽", "软件部", new Double(3100)},   

        {"1003", "刘宇", "经理部", new Double(3000)},   

        {"1004", "张斌", "软件部", new Double(4000)},   

        {"1005", "秦小", "人事部", new Double(4000)}   

    };   

       

    //初始化列名   

    Object[] columnNames = {"编号", "姓名", "部门", "月薪"};   

       

    public JTableFrame_4() {   

        super("单元格具有下拉框的表格");   

        init();   

    }   

       

    public void init() {   

        setSize(500, 300);   

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   

           

        //利用TableModel重新覆盖isCellEditable方法,将第一列变成不可编辑状态   

        dtm = new DefaultTableModel(rowData, columnNames) {   

            public boolean isCellEditable(int rowIndex, int columnIndex) {   

                boolean f = (0 <= rowIndex && rowIndex < getRowCount() && columnIndex == 0) ? false : true;   

                return f;   

            }   

        };   

        table = new JTable(dtm);   

        JComboBox comboBox = new JComboBox();   

        comboBox.addItem("软件部");   

        comboBox.addItem("经理部");   

        comboBox.addItem("人事部");   

        comboBox.addItem("后勤部");   

        comboBox.addItem("财务部");   

           

        //TableColumn主要作用可以对表格中的某一列的属性进行编辑   

        TableColumn tableColumn = table.getColumn("部门");   

           

        //利用TableColumn类中的setCellEditor()方法来设置单元格的编辑器   

        //DefaultCellEditor类可以将表格中的单元格设置成下拉框   

        tableColumn.setCellEditor(new DefaultCellEditor(comboBox));   

           

        //DefaultTableCellRenderer类可以绘制单元格的背景、字体颜色等功能   

        DefaultTableCellRenderer backGroundColor = new DefaultTableCellRenderer();   

        //绘制部门列的背景为黄色   

        backGroundColor.setBackground(Color.yellow);   

        tableColumn.setCellRenderer(backGroundColor);   

           

           

        TableColumn moneyColumn = table.getColumn("月薪");   

        //绘制月薪列的字体颜色   

        DefaultTableCellRenderer fontColor = new DefaultTableCellRenderer() {   

            public void setValue(Object value) { //重写setValue方法,从而可以动态设置列单元字体颜色   

               

                double a = (value instanceof Double) ? ((Double) value).doubleValue() : 0.0; //获取月薪列中的值   

                   

                setForeground((a  > 3099.0) ? Color.red : Color.black); //如果月薪大于3099元,就将字体设置为红色   

                   

                setText((value == null) ? "" : value.toString());   

            }   

        };   

        moneyColumn.setCellRenderer(fontColor);   

                      

       panel = new JPanel();   

        panel.setLayout(new BorderLayout());   

           

        scrollPane = new JScrollPane();   

        scrollPane.getViewport().setView(table); //把二维数据表格放到滚动面板中   

        panel.add(scrollPane, BorderLayout.CENTER); //把滚动面板添加到底层面板上   

           

        this.getContentPane().add(panel, BorderLayout.CENTER);   

           

        setVisible(true);   

    }   

       

    public static void main(String[] args) {   

        JTableFrame_4 f = new JTableFrame_4();   

    }   

}  







我想根据内容动态的设置单元格的字体颜色,比如“负值”显示为“红色”

//TableCellColor.java


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

public class TableCellColor extends JFrame {
  String[] columnNames = {"第1列", "第2列", "第3列"};
  Object[][] data = {
      {
      "(1,1)", "(1,2)", "(1,3)"}
      , {
      "(2,1)", "(2,2)", "(2,3)"}
      , {
      "(3,1)", "(3,2)", "(3,3)"}
      , {
      "(4,1)", "(4,2)", "(4,3)"}
      ,
  };
  int r = 1, c = 0; //      用于控制变色区域
  public TableCellColor() {
    DefaultTableModel dtm = new DefaultTableModel(data, columnNames);
    JTable table = new JTable(dtm);
    table = new JTable(dtm) {

      public Component prepareRenderer(TableCellRenderer renderer, int row,
                                       int column) {
        Component component = super.prepareRenderer(renderer, row, column);

        if (row == r && column == c) {
          component.setBackground(Color.gray);
        }

        return component;
      }
    };

    JScrollPane scroll = new JScrollPane(table);
    this.setContentPane(scroll);
    this.setBounds(100, 50, 300, 150);
  }

  public static void main(String arg[]) {
    TableCellColortes = new TableCellColor();
    tes.setVisible(true);
    tes.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
} 


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释执行命令的使用10 1.2.5UltraEdit的使用11 1.3一个简单的Java应用程序14 1.4一个简单的Java小程序16 1.5本章小结18 第2章Java语言基础19 2.1Java语言的特点19 2.2Java程序的构成21 2.3数据类 型23 2.3.1基本数据类型23 2.3.2常量25 2.3.3变量26 2.3.4整型数据27 .2.3.5浮点型数据29 2.3.6字符型数据30 2.3.7布尔型数据32 2.3.8变量赋初值33 2.3.9变量的作用域34 2.3.10数据类型转换34 2.4运算符与表达式37 2.4.1算术运算符和算术表达式38 2.4.2关系运算符和关系表达式43 2.4.3逻辑运算符和逻辑表达式44 2.4.4条件运算符和条件表达式48 2.4.5位运算符和位运算表达式50 2.4.6赋值运算符和赋值表达式53 2.4.7表达式的求值顺序55 2.5流程控制语句58 2.5.1三种基本控制结构58 2.5.2表达式语句和空语句59 2.5.3块语句60 2.5.4if~else分支语句61 2.5.5多路分支switch~case语句69 2.5.6当型循环while语句71 2.5.7直到型循环do~while语句72 2.5.8当型循环for语句74 2.5.9循环的嵌套78 2.5.10跳转语句break80 2.5.11跳转语句continue82 2.6程序文本的风格84 2.6.1注释84 2.6.2程序的格式编排87 2.7基础语法实战演习88 2.7.1判断闰年88 2.7.2求最大公约数和最小公倍数89 2.7.3Fibonacci数列90 2.7.4逆向输出数字91 2.7.5求水仙花数92 2.7.6输出图形93 2.7.7输出九九口诀表94 2.8本章小结95 第2篇Java面向对象编程 第3章对象和类98 3.1面向对象的基本概念98 3.1.1对象98 3.1.2类99 3.1.3消息101 3.1.4面向对象的4个基本特征101 3.2类与对象104 3.2.1类的基本结构104 3.2.2类的声明104 3.2.3创建类体105 3.2.4对象的生命周期106 3.2.5对象的创建106 3.2.6对象的使用108 3.2.7对象的释放和垃圾收集机制108 3.3成员变量的定义与使用109 3.3.1成员变量的定义109 3.3.2成员变量的访问权限110 3.3.3实例成员变量和静态成员变量114 3.4方法的定义和实现116 3.4.1方法的声明117 3.4.2创建方法体与return语句117 3.4.3局部变量和成员变量的区别119 3.4.4方法的访问权限121 3.5方法的调用121 3.5.1方法调用的形式121 3.5.2方法调用的参数123 3.5.3隐含参数this127 3.6构造方法128 3.6.1无参数构造方法的定义和使用129 3.6.2带参数构造方法的定义和使用131 3.6.3this关键字和构造方法的调用132 3.7静态方法133 3.7.1静态方法的声明和定义134 3.7.2静态方法和实例方法的区别134 3.7.3静态代码块136 3.7.4再论静态成员变量137 3.8main()方法和命令行参数139 3.9结束方法141 3.10本地方法141 3.11本章小结144 第4章继承与多态145 4.1继承的基本原理145 4.2子类对父类的继承146 4.3属性隐藏和方法的覆盖148 4.3.1属性的隐藏148 4.3.2方法的覆盖151 4.4构造方法的继承154 4.5super的使用156 4.5.1用super引用父类的成员156 4.5.2使用super调用父类的构造方法157 4.6继承的内部处理158 4.7多态的基本概念159 4.8重载159 4.8.1普通方法的重载160 4.8.2构造方法的重载161 4.8.3重载的解析163 4.8.4重载与覆盖的区别165 4.9运行时多态165 4.9.1实例方法的运行时多态165 4.9.2成员变量运行时的表现167 4.9.3静态方法运行时

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值