• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 221
  • Last Modified:

JTable color

I am trying to set the grid color of my JTable using
.setSelectionForeground(Color.red);

However, this seems to set the color for every grid line, except the leftmost gridline.

Please let me know what I could be missing. Thanks!
0
dshrenik
Asked:
dshrenik
  • 5
  • 3
1 Solution
 
for_yanCommented:
Do you want to change the font color of the selected cells?
0
 
for_yanCommented:
what means grid color ?
0
 
dshrenikAuthor Commented:
No. I want to change the color of the table border (only the outline - a rectangle).
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
dshrenikAuthor Commented:
Sorry, I used the wrong word - it is not grid color, but I must say "outer border" (rectangle)
0
 
dshrenikAuthor Commented:
This is working partially - but does not add a border to the header:
Border tableBorder = BorderFactory.createLineBorder(Color.gray);
            insulineCoverageTable .setBorder(tableBorder);
0
 
for_yanCommented:
Maybe then you need to use
setGridColor(Color...)
0
 
for_yanCommented:
This is also example about the borders in the table - it is simpler, but
although shows how to modify the border of
selected cell, not the header , but it gives the general idea


This code is from

http://stackoverflow.com/questions/1772764/how-do-you-add-a-border-to-a-row-in-a-jtable:

The better approach is to override the prepareRenderer(...) method JTable so you can add the code in one place. Here is an example to get you started. In reality you would want to use a CompoundBorder that contains a MatteBorder for the top/bottom and and EmptyBorder for the left/right and you would create a single instance of the Border.


import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.text.*;
import javax.swing.border.*;

public class TablePrepareRenderer extends JFrame
{
    JTable table;

    public TablePrepareRenderer()
    {
        Object[] columnNames = {"Type", "Company", "Shares", "Price", "Boolean"};
        Object[][] data =
        {
                {"Buy", "IBM", new Double(1000), new Double(80.5), Boolean.TRUE},
                {"Sell", "MicroSoft", new Double(2000), new Double(6.25), Boolean.TRUE},
                {"RSell", "Apple", new Double(3000), new Double(7.35), Boolean.TRUE},
                {"Buy", "Nortel", new Double(4000), new Double(20), Boolean.TRUE}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        table = new JTable( model )
        {
                //  Returning the Class of each column will allow different
                //  renderers to be used based on Class

                public Class getColumnClass(int column)
                {
                        return getValueAt(0, column).getClass();
                }

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

                        //  Color row based on a cell value
                        //  Alternate row color

                        if (!isRowSelected(row))
                                c.setBackground(row % 2 == 0 ? getBackground() : Color.LIGHT_GRAY);
                        else
                                jc.setBorder(new MatteBorder(1, 0, 1, 0, Color.RED) );


                        //  Use bold font on selected row

                        return c;
                }
        };

        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        table.changeSelection(0, 0, false, false);
        JScrollPane scrollPane = new JScrollPane( table );
        getContentPane().add( scrollPane );
    }

    public static void main(String[] args)
    {
        TablePrepareRenderer frame = new TablePrepareRenderer();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}

Open in new window

table-borders.PNG
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now