简体   繁体   中英

How to apply Font color to specific cells on JTable that uses DefaultTableModel

I'm trying to create a simple To-Do list Java application connected to MS Access and I used JTable and DefaultTableModel to display the list. I want to mark completed tasks by changing its color when I click on a button. I have a boolean field named ' completed ' that serves as indicator.

String header[] = {"priority", "task"};
String data[][];
DefaultTableModel model = new DefaultTableModel(data, header);
JTable table = new JTable(model);

// to be replaced with code that affects only specific cells not the whole table
table.setFont(customFont);

I already have a Font object that I called customFont , which is ready to be applied. My question is, how do I apply it only to specific cells where completed==true.

Sample codes would be much appreciated.

  • easiest of ways is look at prepareRenderer() , best of all is @camickr Table Row Rendering

  • JTable is View, based on TableModel , in most cases you have to convert the view against model converXxxToXxx from inside of prepareRenderer or getTableCellRendererComponent , because JTable could be sorted of filtered

  • methods

code

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

returns access to the specific cell in JTable - ( TableCellRenderer renderer, int row, int column )

Use DefaultTableCellRenderer, then you can use setForeground() and setBackground().

refer to the page.. http://www.jyloo.com/news/?pubId=1282737395000

or see this example...

/*This is the raw code I have written.*/ 
JTable Tbl=new JTable(2,2){ 
    DefaultTableCellRenderer colortext=new DefaultTableCellRenderer();
    {
        colortext.setForeground(Color.RED);
    }
    @Override
    public TableCellRenderer getCellRenderer(int arg0, int arg1) {
        return colortext;
    }
};

I believe you can specify this behavior in

TableCellRenderer.getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, 
                        int row, int column)

method of the table

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM